From 71679812bafcf9057e5ace4deada888a35ff48f1 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Tue, 22 Dec 2020 12:34:47 -0500 Subject: [PATCH] added rawBox and rawMesh --- config.js | 1 + dist/demo-browser-index.js | 84 ++++++++++----------- dist/demo-browser-index.js.map | 6 +- dist/demo-browser-index.json | 8 +- dist/human.esm-nobundle.js | 6 +- dist/human.esm-nobundle.js.map | 6 +- dist/human.esm.js | 84 ++++++++++----------- dist/human.esm.js.map | 6 +- dist/human.esm.json | 26 +++---- dist/human.js | 84 ++++++++++----------- dist/human.js.map | 6 +- dist/human.json | 26 +++---- dist/human.node-gpu.js | 6 +- dist/human.node-gpu.js.map | 6 +- dist/human.node.js | 6 +- dist/human.node.js.map | 6 +- dist/human.node.json | 20 ++--- dist/tfjs.esm.js | 80 ++++++++++---------- dist/tfjs.esm.js.map | 6 +- dist/tfjs.esm.json | 86 +++++++++++----------- package-lock.json | 130 ++++++++------------------------- package.json | 4 +- src/face/facemesh.js | 5 +- src/face/facepipeline.js | 7 -- wiki | 2 +- 25 files changed, 313 insertions(+), 394 deletions(-) diff --git a/config.js b/config.js index 8ea740c8..218bff14 100644 --- a/config.js +++ b/config.js @@ -88,6 +88,7 @@ export default { enabled: true, modelPath: '../models/facemesh.json', inputSize: 192, // fixed value + returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well }, iris: { diff --git a/dist/demo-browser-index.js b/dist/demo-browser-index.js index 358d177e..86069d42 100644 --- a/dist/demo-browser-index.js +++ b/dist/demo-browser-index.js @@ -5,50 +5,50 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2,exports.BlazeFaceModel=BlazeFaceModel,exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS,exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP,exports.TRI468=TRI468,exports.TRI68=TRI68,exports.TRI33=TRI33,exports.TRI7=TRI7,exports.UV468=UV468,exports.UV68=VTX68.map(x=>UV468[x]),exports.UV33=VTX33.map(x=>UV468[x]),exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2,exports.MediaPipeFaceMesh=MediaPipeFaceMesh,exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2,exports.simmilarity=simmilarity2,exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],exports.NUM_KEYPOINTS=exports.partNames.length,exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]),exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load,exports.PoseNet=modelPoseNet.PoseNet,exports.partChannels=keypoints.partChannels,exports.partIds=keypoints.partIds,exports.partNames=keypoints.partNames,exports.poseChain=keypoints.poseChain,exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints,exports.getBoundingBox=util.getBoundingBox,exports.getBoundingBoxPoints=util.getBoundingBoxPoints,exports.scaleAndFlipPoses=util.scaleAndFlipPoses,exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors()),MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures},exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures},exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2,exports.BlazeFaceModel=BlazeFaceModel,exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS,exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP,exports.TRI468=TRI468,exports.TRI68=TRI68,exports.TRI33=TRI33,exports.TRI7=TRI7,exports.UV468=UV468,exports.UV68=VTX68.map(x=>UV468[x]),exports.UV33=VTX33.map(x=>UV468[x]),exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2,exports.MediaPipeFaceMesh=MediaPipeFaceMesh,exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2,exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2,exports.simmilarity=simmilarity2,exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],exports.NUM_KEYPOINTS=exports.partNames.length,exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]),exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load,exports.PoseNet=modelPoseNet.PoseNet,exports.partChannels=keypoints.partChannels,exports.partIds=keypoints.partIds,exports.partNames=keypoints.partNames,exports.poseChain=keypoints.poseChain,exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints,exports.getBoundingBox=util.getBoundingBox,exports.getBoundingBoxPoints=util.getBoundingBoxPoints,exports.scaleAndFlipPoses=util.scaleAndFlipPoses,exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors()),MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures},exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures},exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos2=Math.cos(rotation),sin2=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos2*(1-lumR)+sin2*-lumR,lumG+cos2*-lumG+sin2*-lumG,lumB+cos2*-lumB+sin2*(1-lumB),0,0,lumR+cos2*-lumR+sin2*.143,lumG+cos2*(1-lumG)+sin2*.14,lumB+cos2*-lumB+sin2*-.283,0,0,lumR+cos2*-lumR+sin2*-(1-lumR),lumG+cos2*-lumG+sin2*lumG,lumB+cos2*(1-lumB)+sin2*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xAbs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version21,version_converter:()=>version17,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version13,version_wasm:()=>version11,version_webgl:()=>version9,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all5)=>{__markAsModule2(target);for(var name in all5)__defProp2(target,name,{get:all5[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status2,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer11=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status2){process.exit(status2)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status2){quit(status2)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str2){var ret2=0;if(str2!=null&&str2!==0){var len=(str2.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str2,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str2;if(!(u0&128)){str2+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str2+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str2+=String.fromCharCode(u0);else{var ch=u0-65536;str2+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str2}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str2,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str2.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str2,outPtr,maxBytesToWrite){return stringToUTF8Array(str2,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str2){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str2.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer12){GROWABLE_HEAP_I8().set(array2,buffer12)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer11=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer11=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer11.byteLength,updateGlobalBufferAndViews(buffer11),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str2,prefix){return String.prototype.startsWith?str2.startsWith(prefix):str2.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance2,module2){var exports5=instance2.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker2=pthread.worker;PThread.returnWorkerToPool(worker2)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker2){delete PThread.pthreads[worker2.pthread.thread],PThread.unusedWorkers.push(worker2),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker2),1),PThread.freeThreadData(worker2.pthread),worker2.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker2,onFinishedLoading){worker2.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker2.pthread&&(PThread.currentProxiedOperationCallerThread=worker2.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker2.loaded=!0,onFinishedLoading&&onFinishedLoading(worker2),worker2.runPthread&&(worker2.runPthread(),delete worker2.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker2.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker2.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker2)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker2):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker2.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker2.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker2.on("message",function(data2){worker2.onmessage({data:data2})}),worker2.on("error",function(data2){worker2.onerror(data2)}),worker2.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker2.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker2=pthread&&pthread.worker;if(!worker2)return;worker2.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack9=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker2=PThread.getNewWorker();if(worker2.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker2);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker2,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker2.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker2.runPthread=function(){msg.time=performance.now(),worker2.postMessage(msg,threadParams.transferList)},worker2.loaded&&(worker2.runPthread(),delete worker2.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status2){this.name="ExitStatus",this.message="Program terminated with exit("+status2+")",this.status=status2}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status2,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status2){process.exit(status2)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status2){quit(status2)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str2){var ret2=0;if(str2!=null&&str2!==0){var len=(str2.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str2,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str2="";idx>10,56320|ch&1023)}}return str2}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str2,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str2.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str2,outPtr,maxBytesToWrite){return stringToUTF8Array(str2,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer12){HEAP8.set(array2,buffer12)}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str2,prefix){return String.prototype.startsWith?str2.startsWith(prefix):str2.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance2,module2){var exports5=instance2.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status2){exit(status2)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status2){this.name="ExitStatus",this.message="Program terminated with exit("+status2+")",this.status=status2}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status2,implicit){if(implicit&&noExitRuntime&&status2===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status2,exitRuntime(),Module.onExit&&Module.onExit(status2)),quit_(status2,new ExitStatus(status2))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool6,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min8,max10){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean7,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse12){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real8,imag8){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min8,x,max10){return Math.max(min8,Math.min(x,max10))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add33(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` +`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xAbs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version18,version_converter:()=>version14,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version10,version_wasm:()=>version9,version_webgl:()=>version8,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all4)=>{__markAsModule2(target);for(var name in all4)__defProp2(target,name,{get:all4[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status2,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer10=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status2){process.exit(status2)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status2){quit(status2)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str2){var ret2=0;if(str2!=null&&str2!==0){var len=(str2.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str2,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str2;if(!(u0&128)){str2+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str2+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str2+=String.fromCharCode(u0);else{var ch=u0-65536;str2+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str2}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str2,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str2.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str2,outPtr,maxBytesToWrite){return stringToUTF8Array(str2,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str2){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str2.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer11){GROWABLE_HEAP_I8().set(array2,buffer11)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer10=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer10=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer10.byteLength,updateGlobalBufferAndViews(buffer10),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str2,prefix){return String.prototype.startsWith?str2.startsWith(prefix):str2.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance2,module2){var exports5=instance2.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker2=pthread.worker;PThread.returnWorkerToPool(worker2)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker2){delete PThread.pthreads[worker2.pthread.thread],PThread.unusedWorkers.push(worker2),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker2),1),PThread.freeThreadData(worker2.pthread),worker2.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker2,onFinishedLoading){worker2.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker2.pthread&&(PThread.currentProxiedOperationCallerThread=worker2.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker2.loaded=!0,onFinishedLoading&&onFinishedLoading(worker2),worker2.runPthread&&(worker2.runPthread(),delete worker2.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker2.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker2.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker2)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker2):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker2.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker2.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker2.on("message",function(data2){worker2.onmessage({data:data2})}),worker2.on("error",function(data2){worker2.onerror(data2)}),worker2.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker2.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker2=pthread&&pthread.worker;if(!worker2)return;worker2.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker2=PThread.getNewWorker();if(worker2.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker2);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker2,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker2.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker2.runPthread=function(){msg.time=performance.now(),worker2.postMessage(msg,threadParams.transferList)},worker2.loaded&&(worker2.runPthread(),delete worker2.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status2){this.name="ExitStatus",this.message="Program terminated with exit("+status2+")",this.status=status2}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status2,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status2){process.exit(status2)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status2){quit(status2)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str2){var ret2=0;if(str2!=null&&str2!==0){var len=(str2.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str2,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str2="";idx>10,56320|ch&1023)}}return str2}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str2,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str2.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str2,outPtr,maxBytesToWrite){return stringToUTF8Array(str2,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer11){HEAP8.set(array2,buffer11)}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str2,prefix){return String.prototype.startsWith?str2.startsWith(prefix):str2.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance2,module2){var exports5=instance2.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status2){exit(status2)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status2){this.name="ExitStatus",this.message="Program terminated with exit("+status2+")",this.status=status2}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status2,implicit){if(implicit&&noExitRuntime&&status2===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status2,exitRuntime(),Module.onExit&&Module.onExit(status2)),quit_(status2,new ExitStatus(status2))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool5,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min7,max9){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean6,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse11){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real7,imag7){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min7,x,max9){return Math.max(min7,Math.min(x,max9))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum28=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` `)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance2=>!!instance2&&instance2.data!=null&&instance2.dataSync!=null&&instance2.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance2=>instance2 instanceof Tensor&&instance2.assign!=null&&instance2.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor168,tensorList){return tensorList.some(x=>x.id===tensor168.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor168.kept&&tensor168.scopeId===oldScope.id&&this.track(tensor168)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor168 of node.saved)tensor168.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real8,imag8){let $real=convertToTensor(real8,"real","complex"),$imag=convertToTensor(imag8,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor168=>tensor168.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str2){return useNodeBuffer?Buffer.byteLength(str2):new Blob([str2]).size}function arrayBufferToBase64String(buffer11){if(useNodeBuffer)return Buffer.from(buffer11).toString("base64");let buf=new Uint8Array(buffer11),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer11.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer11=>{temp.set(new Uint8Array(buffer11),offset),offset+=buffer11.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer11=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer11);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer11)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor168,indices){if(tensor168.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor168.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor168.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor168.rank}`);if(tensor168.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor168.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. +`;return lines[lines.length-1]=" "+lines[lines.length-1]+"]"+(isLast?"":newLineSep),lines}function createComplexTuples(vals){let complexTuples=[];for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance2=>!!instance2&&instance2.data!=null&&instance2.dataSync!=null&&instance2.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance2=>instance2 instanceof Tensor&&instance2.assign!=null&&instance2.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor167,tensorList){return tensorList.some(x=>x.id===tensor167.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor167.kept&&tensor167.scopeId===oldScope.id&&this.track(tensor167)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor167 of node.saved)tensor167.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real7,imag7){let $real=convertToTensor(real7,"real","complex"),$imag=convertToTensor(imag7,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor167=>tensor167.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str2){return useNodeBuffer?Buffer.byteLength(str2):new Blob([str2]).size}function arrayBufferToBase64String(buffer10){if(useNodeBuffer)return Buffer.from(buffer10).toString("base64");let buf=new Uint8Array(buffer10),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer10.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer10=>{temp.set(new Uint8Array(buffer10),offset),offset+=buffer10.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer10=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer10);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer10)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor167,indices){if(tensor167.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor167.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor167.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor167.rank}`);if(tensor167.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor167.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. Actual: ${actualFlat}. Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp13=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp13,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor168=>tensor168.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad11,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad11,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad11,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad11==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad11=="object"){let top=dataFormat==="channelsLast"?pad11[1][0]:pad11[2][0],bottom=dataFormat==="channelsLast"?pad11[1][1]:pad11[2][1],left=dataFormat==="channelsLast"?pad11[2][0]:pad11[3][0],right=dataFormat==="channelsLast"?pad11[2][1]:pad11[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,front:pad11,back:pad11,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad11,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad11==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor168=>{if(tensor168.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor168.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean7,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad11,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad11,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad11,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad11,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad11,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad11),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad11){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad11);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad11,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad11){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad11)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse12=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse12);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse12};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${expectedFlat}.`)}}function expectPromiseToFail(fn,done){fn().then(()=>done.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp12=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp12,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor167=>tensor167.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad10,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad10,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad10,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad10==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad10=="object"){let top=dataFormat==="channelsLast"?pad10[1][0]:pad10[2][0],bottom=dataFormat==="channelsLast"?pad10[1][1]:pad10[2][1],left=dataFormat==="channelsLast"?pad10[2][0]:pad10[3][0],right=dataFormat==="channelsLast"?pad10[2][1]:pad10[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,front:pad10,back:pad10,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad10,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad10==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor167=>{if(tensor167.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${tensor167.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod4=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod4===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod4}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean6,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad10,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad10,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad10,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad10,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad10,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad10),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad10){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad10);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad10,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad10){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad10)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse11=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse11);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse11};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputHeight} and ${blockSize} for depthToSpace with input shape ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad11,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros10=zerosLike(divResult),bEqualsZero=equal($b,zeros10);return where(bEqualsZero,zeros10,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable3=>!variable3.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable3=>variable3.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad11,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad11,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real8=zeros(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real8=ones2(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad11,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad11===0&&(pad11="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad11),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad11==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad11:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp13){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp13,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul64=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul64,resultY=this.mean+this.stdDev*v2*mul64,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min8,this.range=max10-min8,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min8} - ${max10} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step9)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad11,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad11,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean7=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean7,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step9!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step9,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad11,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad11,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad11,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance2=>instance2.minimize!=null&&instance2.computeGradients!=null&&instance2.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log6,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod5,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod5),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split5,tile:()=>tile4,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split5(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile4(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad11){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad11);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad11},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad11)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad11,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad11,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad11,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad11,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad11,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad11,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad11){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad11);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad11,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad11),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad11)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse12}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse12);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad11,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad11,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean7,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean7.shape,x.shape),tileShape=[];if(mean7.rank===1){for(let i=0;imean7.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean7.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean7.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean7.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean7.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean7.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean7.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean7.shape)},derOffset=()=>{let offsetDer=dy;return mean7.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean7.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad11,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad11,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad11)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp13=b,outShape=assertAndGetBroadcastShape(base2.shape,exp13.shape),derBase=()=>{let expFloat=cast(exp13,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp13.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp13.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean7,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean7,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min8,max10){return this.throwIfDisposed(),clipByValue(this,min8,max10)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad11,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad11,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad11,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse12){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse12)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad11,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad11,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp13){return this.throwIfDisposed(),powStrict(this,exp13)};Tensor.prototype.pow=function(exp13){return this.throwIfDisposed(),pow(this,exp13)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad10,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros9=zerosLike(divResult),bEqualsZero=equal($b,zeros9);return where(bEqualsZero,zeros9,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad10,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad10,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real7=zeros(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real7=ones2(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad10,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad10===0&&(pad10="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad10),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad10==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad10:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp12){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp12,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul63=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul63,resultY=this.mean+this.stdDev*v2*mul63,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min7,this.range=max9-min7,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min7} - ${max9} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step8)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad10,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad10,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean6=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean6,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step8!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step8,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad10,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad10,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad10,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance2=>instance2.minimize!=null&&instance2.computeGradients!=null&&instance2.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log5,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod4,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod4),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod4,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod4):reshapedPermuted.push(inputShape[0]*prod4);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split4,tile:()=>tile3,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split4(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile3(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad10){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad10);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad10},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad10)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad10,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad10,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad10,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad10,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad10,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad10,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad10){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad10);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad10,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad10),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad10)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse11}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse11);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad10,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad10,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean6,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean6.shape,x.shape),tileShape=[];if(mean6.rank===1){for(let i=0;imean6.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean6.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean6.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean6.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean6.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean6.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean6.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean6.shape)},derOffset=()=>{let offsetDer=dy;return mean6.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean6.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax5=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax5))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad10,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad10,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad10)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp12=b,outShape=assertAndGetBroadcastShape(base2.shape,exp12.shape),derBase=()=>{let expFloat=cast(exp12,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp12.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp12.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean6,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean6,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min7,max9){return this.throwIfDisposed(),clipByValue(this,min7,max9)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad10,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad10,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad10,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse11){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse11)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad10,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad10,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp12){return this.throwIfDisposed(),powStrict(this,exp12)};Tensor.prototype.pow=function(exp12){return this.throwIfDisposed(),pow(this,exp12)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split8=kernel_impls_exports.split,tile7=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer11=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer11.set(xBuf.get(...inLoc),...outLoc)}return buffer11.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax10&&(max10=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse12){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse12?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile8(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum29=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum29+=z*z}return sum29}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real8=complexVals.complexTensorInfos.real,imag8=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real8.dataId).values,imagVals=cpuBackend.data.get(imag8.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex9(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,realVals=backend3.data.get(real8.dataId).values,imagVals=backend3.data.get(imag8.dataId).values,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.data.get(complexInfo.dataId);return complex11.complexTensorInfos={real:backend3.makeTensorInfo(real8.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag8.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex9};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real8=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real8.dataId).values;return backend3.makeTensorInfo(real8.shape,real8.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real6};function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast48};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast48({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast48({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex9({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add31=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add31};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil4=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil4},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp12=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp12},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm14=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm14},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor6=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor6},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log9=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log9};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax10&&(max10=value)}vals[i]=max10}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt5=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt5};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice19(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice19},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub34=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub34};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu6=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu6},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu6},relu9=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu9},relu66=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu66};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu9({inputs:{x},backend:backend3});if(activation2==="elu")return elu6({inputs:{x},backend:backend3});if(activation2==="relu6")return relu66({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu6({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape87(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real8=xData.complexTensorInfos.real,imag8=xData.complexTensorInfos.imag;real8.shape=$shape,imag8.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape87};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape87({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape87({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos4},acosh4=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh4},asin4=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin4},asinh4=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh4},atan5=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan5},atanh4=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh4};function pool5(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean7,variance}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean7,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean7.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concat17({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat17({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape87({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat17};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos6},cosh5=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh5};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div35=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div35},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf4=unaryKernelFunc(Erf,xi=>{let sign5=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign5*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf4};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p5=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p5},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool5(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad11),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal4=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal4},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round4},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu5=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu5},sigmoid7=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid7},sign4=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign4},sin5=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin5},sinh5=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh5},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus5=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt13},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step8},tan4=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan4},tanh6=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh6};function unique5(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique5},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad11=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad11)+line),maxLineLength=0;for(let i=0;i0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer10=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer10.set(xBuf.get(...inLoc),...outLoc)}return buffer10.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax9&&(max9=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse11){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse11?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile7(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum28=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum28+=z*z}return sum28}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split8(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real7=complexVals.complexTensorInfos.real,imag7=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real7.dataId).values,imagVals=cpuBackend.data.get(imag7.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex8(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,realVals=backend3.data.get(real7.dataId).values,imagVals=backend3.data.get(imag7.dataId).values,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.data.get(complexInfo.dataId);return complex10.complexTensorInfos={real:backend3.makeTensorInfo(real7.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag7.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex8};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real5(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real7=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real7.dataId).values;return backend3.makeTensorInfo(real7.shape,real7.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real5};function cast47(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast47({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex8({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real5({inputs:{input:x},backend:backend3}),result=cast47({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast47};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast47({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast47({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex8({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add30=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add30};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil3=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil3},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp11=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp11},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm13=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm13},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor5=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor5},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log8=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log8};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax9&&(max9=value)}vals[i]=max9}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt4=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt4};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice18(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice18},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub33=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub33};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu5=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu5},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu5(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu5},relu8=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu8},relu65=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu65};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu8({inputs:{x},backend:backend3});if(activation2==="elu")return elu5({inputs:{x},backend:backend3});if(activation2==="relu6")return relu65({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu5({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape86(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real7=xData.complexTensorInfos.real,imag7=xData.complexTensorInfos.imag;real7.shape=$shape,imag7.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape86};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape86({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape86({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos3},acosh3=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh3},asin3=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin3},asinh3=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh3},atan4=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan4},atanh3=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh3};function pool4(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean6,variance}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean6,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean6.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real5({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag5({inputs:{input:t},backend:backend3})),realConcated=concat16({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat16({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex8({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape86({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat16};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos5},cosh4=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh4};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div34=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div34},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf3=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf3};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p4=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p4},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool4(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad10),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal3=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal3},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu4=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu4},sigmoid6=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid6},sign3=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign3},sin4=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin4},sinh4=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh4},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus4=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt12},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step7},tan3=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan3},tanh5=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh5};function unique4(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique4},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` +`),pad10=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad10)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function createStaticIndexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max10=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max10+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer11,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status2=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status2!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status2))}function getFramebufferErrorMessage(gl,status2){switch(status2){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status2}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`float v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` +`))}function createProgram(gl){return throwIfNull(gl,()=>gl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function createStaticIndexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max9=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max9+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer10,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status2=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status2!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status2))}function getFramebufferErrorMessage(gl,status2){switch(status2){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status2}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - float result = ${operation211}; + float result = ${operation210}; setOutput(result); } - `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`vec4 v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` + `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - vec4 result = ${operation211}; + vec4 result = ${operation210}; setOutput(result); } `}},ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` @@ -71,7 +71,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } setOutput(float(bestIndex)); } - `}};function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i 0.0 || val < 0.0) ? false : val != 0.0; } @@ -91,7 +91,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version22="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(version19="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -116,7 +116,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version22,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:version19,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` int getFlatIndex(ivec3 coords) { return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; } @@ -1041,7 +1041,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1055,7 +1055,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1825,7 +1825,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(newValue); } } - `}},CumSumProgram=class{constructor(shape,exclusive,reverse12){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse12?`end != ${length-1}`:"end != 0",idxString=reverse12?"end + 1":"end - 1"):(condition=reverse12?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse12?"end + pow2":"end - pow2"),this.userCode=` + `}},CumSumProgram=class{constructor(shape,exclusive,reverse11){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse11?`end != ${length-1}`:"end != 0",idxString=reverse11?"end + 1":"end - 1"):(condition=reverse11?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse11?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${getCoordsDataType(rank)} coords = getOutputCoords(); @@ -2026,7 +2026,7 @@ return (round(mod(b, 2.0)) != 1) ? void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer11=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer11}function downloadFloat32MatrixFromBuffer(gl,buffer11,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer11,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer11,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer11,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer11,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer11,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status2=gl2.clientWaitSync(sync,0,0);return status2===gl2.ALREADY_SIGNALED||status2===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` + }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer10=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer10}function downloadFloat32MatrixFromBuffer(gl,buffer10,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer10,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer10,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer10,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer10,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer10,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status2=gl2.clientWaitSync(sync,0,0);return status2===gl2.ALREADY_SIGNALED||status2===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` blockIndex = rc.y + ${col}; pos = rc.x + ${row}; @@ -3551,7 +3551,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getChannel(packedInput, ${coords2})); } - `}},{segment_util:segment_util2}=backend_util_exports,split10=kernel_impls_exports.split,tile9=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice21,shape,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice21,dtype,complexTensorInfos,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer11=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer11=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer11==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer11,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice21}=this.texData.get(dataId),key=slice21&&slice21.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile9(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse12){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse12),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse12),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min8,max10){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min8,max10);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split10(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex10(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real8},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag8},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex11.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex10},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` + `}},{segment_util:segment_util2}=backend_util_exports,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice20,shape,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice20,dtype,complexTensorInfos,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer10=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer10=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer10==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer10,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice20}=this.texData.get(dataId),key=slice20&&slice20.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile8(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse11){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse11),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse11),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min7,max9){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min7,max9);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex9(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real7},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag7},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex10.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex9},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` if (isnan(a)) return a; if (isnan(b)) return b; `,CHECK_NAN_SNIPPET_BINARY_PACKED=` @@ -3559,14 +3559,14 @@ return (round(mod(b, 2.0)) != 1) ? result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real8,imag8]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex10({inputs:{real:real8,imag:imag8},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real8),webglBackend.disposeIntermediateTensorInfo(imag8),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real7,imag7]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex9({inputs:{real:real7,imag:imag7},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real7),webglBackend.disposeIntermediateTensorInfo(imag7),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` return atan(a, b); `,ATAN2_PACKED=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+CHECK_NAN_SNIPPET_BINARY_PACKED+` return result; -`,atan25=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan25};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` +`,atan24=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan24};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -3589,7 +3589,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput((x - mean) * inv + offset); } - `}},batchNorm3=({inputs,backend:backend3,attrs})=>{let{x,mean:mean7,variance,offset,scale:scale2}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean7,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real7},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast49(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast49({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex10({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real7({inputs:{input:x},backend:backend3}),result=cast49({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast49},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i{let{x,mean:mean6,variance,offset,scale:scale2}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean6,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real6},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast48},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;iidx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag7};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape89(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape89};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real7({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag7({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex10({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape89({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape89({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat18(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat18},COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel),res=channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag6};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape88(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape88};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape88({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape88({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat17(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat17},COS=CHECK_NAN_SNIPPET_UNARY+` return cos(x); -`,cos7=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos7},DIV=` +`,cos6=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos6},DIV=` if (a == b) { return 1.0; }; @@ -3659,7 +3659,7 @@ return a / b;`,DIV_PACKED=` } return result; -`,div36=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div36},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` +`,div35=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div35},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` const float exponentMultiplier = ${exponentMultiplierSnippet}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -3692,7 +3692,7 @@ return a / b;`,DIV_PACKED=` ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape89({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape89({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft7},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape88({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape88({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft6},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -3762,7 +3762,7 @@ return a / b;`,DIV_PACKED=` ${glsl.output} = result; } - `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft7},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` + `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft6},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` if (inIdx < 0 || inIdx >= ${inSize}) { return 0.0; } @@ -3815,7 +3815,7 @@ return a / b;`,DIV_PACKED=` } setOutput(sumValue); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend3){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape89({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape89({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` + `}};function transposeImpl2(x,perm,backend3){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TransposePackedProgram(x.shape,perm):new TransposeProgram(x.shape,perm);return backend3.runWebGLProgram(program,[x],x.dtype)}var maxConfig2={kernelName:Max,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape88({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape88({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` int start = ${start}; int end = ${end}; @@ -3935,7 +3935,7 @@ return a / b;`,DIV_PACKED=` float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` + `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` vec3 fill = vec3(${fillValue.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { @@ -3954,19 +3954,19 @@ return a / b;`,DIV_PACKED=` } `}},rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend3,program=new RotateProgram(image3.shape,radians,fillValue,center),output=webglBackend.runWebGLProgram(program,[image3],image3.dtype);return output}},SIN=CHECK_NAN_SNIPPET_UNARY+` return sin(x); -`,sin6=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin6},SQUARE="return x * x;",square24=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square24},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan5=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan5},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape90},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape90({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape90({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast50(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast50},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat19(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse12?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum6},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean7,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean7.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max8(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max8},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min6},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad10(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad10,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu7(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu7},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast50({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse11(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape90({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse11,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice20(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d3(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d3(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d3(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d3(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice20},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax4(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax4};function split11(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice20({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split11},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape90({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice20({inputs:{x},attrs:{begin,size},backend:backend3});return reshape90({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape90({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum28},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer11=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer11,memoryOffset,size);case"int32":return new Int32Array(buffer11,memoryOffset,size);case"bool":return new Uint8Array(buffer11,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer11,dtype){switch(dtype){case"float32":return new Float32Array(buffer11);case"int32":return new Int32Array(buffer11);case"bool":return new Uint8Array(buffer11);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version11="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance2){if(instance2==null)return null;let dict={};return dict.className=instance2.getClassName(),dict.config=instance2.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: +`,sin5=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin5},SQUARE="return x * x;",square23=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square23},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan4=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan4},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape89},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape89({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape89({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast49(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast49},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat18(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse11?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum5},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill5(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill5},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean6,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean6.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max7(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max7},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min5},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu6},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast49({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape89({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse10,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid7(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid7},sinConfig3=createUnaryKernelConfig(Sin);function slice19(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d2(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice19},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax3(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax3};function split10(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice19({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split10},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape89({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice19({inputs:{x},attrs:{begin,size},backend:backend3});return reshape89({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape89({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum27(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum27},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer10=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer10,memoryOffset,size);case"int32":return new Int32Array(buffer10,memoryOffset,size);case"bool":return new Uint8Array(buffer10,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer10,dtype){switch(dtype){case"float32":return new Float32Array(buffer10);case"int32":return new Int32Array(buffer10);case"bool":return new Uint8Array(buffer10);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance2){if(instance2==null)return null;let dict={};return dict.className=instance2.getClassName(),dict.config=instance2.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config2=identifier;if(config2.className==null||config2.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config2)}. 'className' and 'config' must set.`);let className=config2.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique7(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones8,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros9});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile11(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile11(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean7=0,stddev=1,dtype,seed){return randomNormal(shape,mean7,stddev,dtype,seed)}function dot5(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather7(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square25(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu7(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros9(){return new Zeros}function ones8(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add32,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d5,conv2d:()=>conv2d11,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d3,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot6,dropout:()=>dropout3,elu:()=>elu8,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum9,minimum:()=>minimum7,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu8,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape91,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax5,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable3=variableAndValue[0];variable3.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor168,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex),layer.inboundNodes.length===0)return[tensor168];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square25(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square25(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square25(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square25(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg20=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg20,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast51(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast51(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack9=[],marks=[];for(stack9.push(fetch3);stack9.length>0;){let top=stack9[stack9.length-1];if(visited.has(top.name)){stack9.pop();continue}let topIsMarked=marks[marks.length-1]===stack9.length-1;if(top.inputs.length===0||topIsMarked)stack9.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack9.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack9.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique7(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor168,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex,tensorIndex=tensor168.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor168.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version13}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather7(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range4(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor168=tensors[name];oldTensorIds.indexOf(tensor168.id)===-1&&tensorsToDispose.push(tensor168)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique7(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique7(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor168,i)=>{tensor168==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range4(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version13}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer11,specs){let name2Tensor=io_exports.decodeWeights(buffer11,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu7(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square25(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range4(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range4(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile11(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile11(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot5(mul(inputs,dpMask),this.kernel.read()):h=dot5(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot5(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones9(),rate),createMask=()=>inTrainPhase(droppedInputs,ones9,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot5(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot5(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range4(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast51(input2,"int32"));let output=gather7(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique7(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max9(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range4(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range4(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast51(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean7,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean7,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean7,variance,beta,gamma,epsilon3);return[normed,mean7,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range4(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean7.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean7,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range4(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range4(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range4(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean7,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable3,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable3.read(),updateDelta=origValue.sub(value).mul(decay);variable3.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean7,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique7(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean7,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor168 of additionalInputs)if(tensor168 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu8(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu8(args){return new PReLU(args)}function softmax5(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d5(args){return new Conv1D(args)}function conv2d11(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d3(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape91(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add32(args){return new Add10(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum9(args){return new Maximum3(args)}function minimum7(args){return new Minimum3(args)}function multiply3(args){return new Multiply7(args)}function dot6(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less7(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less7:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less7,this.monitorFunc===less7&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less7?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor168=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor168.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor168.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor168=resourceManager.getHashTableHandleByName(nodeName);if(tensor168!=null)return tensor168}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad11=getParamValue("pad",node,tensorMap,context);if(pad11==="explicit"){pad11=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad11[i*2],explicitPadding[i][1]=pad11[i*2+1];return explicitPadding}return pad11}function cloneTensor(tensor168){return tensor168.kept?tensor168:clone(tensor168)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor168.tensor.id))&&tensor168.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor168){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor168.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor168.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor168,keep(tensor168),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor168,0))}split(length,tensor168){if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor168.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to +2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique6(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros8});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod4=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile10(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile10(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean6=0,stddev=1,dtype,seed){return randomNormal(shape,mean6,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square24(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu6(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros8(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add31,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d10,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu7,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum8,minimum:()=>minimum6,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu7,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape90,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax4,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor167,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex),layer.inboundNodes.length===0)return[tensor167];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log9=mul(div(1,this.seen),this.totals[key]);logs5[key]=log9,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square24(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square24(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square24(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square24(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg19=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg19,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast50(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast50(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique6(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor167,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex,tensorIndex=tensor167.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor167.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version10}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor167=tensors[name];oldTensorIds.indexOf(tensor167.id)===-1&&tensorsToDispose.push(tensor167)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique6(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique6(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor167,i)=>{tensor167==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version10}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer10,specs){let name2Tensor=io_exports.decodeWeights(buffer10,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu6(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square24(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step8=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step8,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile10(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile10(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast50(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique6(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max8(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast50(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean6,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean6,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean6,variance,beta,gamma,epsilon3);return[normed,mean6,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean6.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean6,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean6,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean6,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique6(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean6,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step8=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step8,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor167 of additionalInputs)if(tensor167 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu7(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu7(args){return new PReLU(args)}function softmax4(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d10(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape90(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add31(args){return new Add9(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum8(args){return new Maximum3(args)}function minimum6(args){return new Minimum3(args)}function multiply3(args){return new Multiply6(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater10:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater10:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor167=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor167.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor167.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor167=resourceManager.getHashTableHandleByName(nodeName);if(tensor167!=null)return tensor167}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor167){return tensor167.kept?tensor167:clone(tensor167)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor167.tensor.id))&&tensor167.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor167){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, + because the value dtype is ${tensor167.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor167.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor167,keep(tensor167),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor167,0))}split(length,tensor167){if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor167.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=[];tidy(()=>{tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor168.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor168.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor168=>{(keepIds==null||!keepIds.has(tensor168.id))&&tensor168.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor168=>reshape(tensor168,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor168=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor168.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor168,elementShape)}pushBack(tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor168.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor168),this.tensors.push(tensor168)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168),this.tensors[elementIndex]=tensor168}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor168,elementShape,elementDtype){let dtype=tensor168.dtype;if(tensor168.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor168.shape}`);if(tensor168.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${elementDtype}`);let outputShape=tensor168.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor168);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor168,indices,elementShape,numElements){if(indices.length!==tensor168.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor168.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor168.dtype,numElements),tensors=unstack(tensor168,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split12(tensor168,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=[];tidy(()=>{tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor167.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor167.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor167=>{(keepIds==null||!keepIds.has(tensor167.id))&&tensor167.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor167=>reshape(tensor167,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor167=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor167.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor167,elementShape)}pushBack(tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor167.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor167),this.tensors.push(tensor167)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167),this.tensors[elementIndex]=tensor167}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor167,elementShape,elementDtype){let dtype=tensor167.dtype;if(tensor167.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor167.shape}`);if(tensor167.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${elementDtype}`);let outputShape=tensor167.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor167);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor167,indices,elementShape,numElements){if(indices.length!==tensor167.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor167.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor167.dtype,numElements),tensors=unstack(tensor167,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split11(tensor167,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor168=>tensor168.id),condValue=await condResult[0].data();condResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor168=>tensor168.id);origResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor168=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor168,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split12(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad11,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad11)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad11,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad11,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step9=getParamValue("step",node,tensorMap,context);return[range(start,stop,step9,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean7=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean7,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse12=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse12)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor168,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor168=>{let sameShape=util_exports.arraysEqual(tensor168.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor168).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor168:reshape(tensor168,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor168=getParamValue("tensor",node,tensorMap,context);return unstack(tensor168,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return split(tensor168,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor168=>tensor168.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor168=>tensor168.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor168=>{tensor168!=null&&(intermediateTensorConsumerCount[tensor168.id]=(intermediateTensorConsumerCount[tensor168.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor168=>{if(tensor168&&!tensorsToKeep.has(tensor168.id)){let count2=intermediateTensorConsumerCount[tensor168.id];count2===1?(tensor168.dispose(),delete intermediateTensorConsumerCount[tensor168.id]):count2!=null&&intermediateTensorConsumerCount[tensor168.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor168=>{tensor168&&!tensor168.isDisposed&&!keepIds.has(tensor168.id)&&tensor168.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor168,index)=>(map[this.inputs[index].name]=tensor168,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack9=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack9.length>0;){let promises=this.processStack(inputNodes,stack9,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack9,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack9.length>0;){let item=stack9.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack9,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor168=>tensor168.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor168=this._signature.inputs[inputName];result[tensor168.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor168=this._signature.outputs[name];return tensor168.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version17="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version19,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max10){return Math.floor(this.random()*max10)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor167=>tensor167.id),condValue=await condResult[0].data();condResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor167=>tensor167.id);origResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor167=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor167,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split11(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad10,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad10)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad10,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad10,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step8=getParamValue("step",node,tensorMap,context);return[range(start,stop,step8,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean6=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean6,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse11=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse11)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor167,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor167=>{let sameShape=util_exports.arraysEqual(tensor167.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor167).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor167:reshape(tensor167,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor167=getParamValue("tensor",node,tensorMap,context);return unstack(tensor167,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return split(tensor167,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor167=>tensor167.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor167=>tensor167.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor167=>{tensor167!=null&&(intermediateTensorConsumerCount[tensor167.id]=(intermediateTensorConsumerCount[tensor167.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor167=>{if(tensor167&&!tensorsToKeep.has(tensor167.id)){let count2=intermediateTensorConsumerCount[tensor167.id];count2===1?(tensor167.dispose(),delete intermediateTensorConsumerCount[tensor167.id]):count2!=null&&intermediateTensorConsumerCount[tensor167.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor167=>{tensor167&&!tensor167.isDisposed&&!keepIds.has(tensor167.id)&&tensor167.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor167,index)=>(map[this.inputs[index].name]=tensor167,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack8=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack8.length>0;){let promises=this.processStack(inputNodes,stack8,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack8,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack8.length>0;){let item=stack8.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack8,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor167=>tensor167.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor167=this._signature.inputs[inputName];result[tensor167.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor167=this._signature.outputs[name];return tensor167.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version14="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version16,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max9){return Math.floor(this.random()*max9)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset5){let base2=this,size;return this.size===Infinity||dataset5.size===Infinity?size=Infinity:this.size!=null&&dataset5.size!=null?size=this.size+dataset5.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset5.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let base2=this,random=seedrandom4.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];if(canTensorify(exampleRow)){let value=batchConcat(rows);return{value,recurse:!1}}return{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor4(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){let inputIterator=await this.input.iterator(),utf8Iterator=inputIterator.decodeUTF8(),lineIterator=utf8Iterator.split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice21=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice21)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version19="2.7.0",version21={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version9,"tfjs-backend-wasm":version11},config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice20=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice20)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version16="2.7.0",version18={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version8,"tfjs-backend-wasm":version9},config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4685,7 +4685,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`,version8="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig2={}){this.tf=tfjs_esm_exports,this.version=version8,this.config=mergeDeep(config_default,userConfig2),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig2){this.state="load";let timeStamp=now2();userConfig2&&(this.config=mergeDeep(this.config,userConfig2)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig2={}){this.state="image",this.config=mergeDeep(this.config,userConfig2);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig2={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig2),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig2){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig2&&(this.config=mergeDeep(this.config,userConfig2));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};async function drawGesture(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.font=ui2.baseFont,ctx.fillStyle=ui2.baseLabel;let i=1;for(let gesture2=0;gesture21&&what[1].length>0){let person=where2[1]>0?`#${where2[1]}`:"",label=`${where2[0]} ${person}: ${what[1]}`;ctx.fillStyle="black",ctx.fillText(label,8,2+i*ui2.baseLineHeight),ctx.fillStyle=ui2.baseLabel,ctx.fillText(label,6,0+i*ui2.baseLineHeight),i+=1}}}async function drawFace(result,canvas,ui2,triangulation){if(!result)return;let ctx=canvas.getContext("2d");for(let face2 of result){ctx.font=ui2.baseFont,ctx.strokeStyle=ui2.baseColor,ctx.fillStyle=ui2.baseColor,ctx.lineWidth=ui2.baseLineWidth,ctx.beginPath(),ui2.drawBoxes&&ctx.rect(face2.box[0],face2.box[1],face2.box[2],face2.box[3]);let labels=[];if(face2.genderConfidence&&labels.push(`${Math.trunc(100*face2.genderConfidence)}% ${face2.gender||""}`),face2.age&&labels.push(`age: ${face2.age||""}`),face2.iris&&labels.push(`iris: ${face2.iris}`),face2.emotion&&face2.emotion.length>0){let emotion2=face2.emotion.map(a=>`${Math.trunc(100*a.score)}% ${a.emotion}`);labels.push(emotion2.join(" "))}ctx.fillStyle=ui2.baseLabel;for(let i=0;iface2.mesh[index]),path=new Path2D;path.moveTo(points[0][0],points[0][1]);for(let point of points)path.lineTo(point[0],point[1]);path.closePath(),ctx.strokeStyle=ui2.useDepth?`rgba(${127.5+2*points[0][2]}, ${127.5-2*points[0][2]}, 255, 0.3)`:ui2.baseColor,ctx.stroke(path),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?`rgba(${127.5+2*points[0][2]}, ${127.5-2*points[0][2]}, 255, 0.3)`:ui2.baseColor,ctx.fill(path))}if(face2.annotations&&face2.annotations.leftEyeIris){ctx.strokeStyle=ui2.useDepth?"rgba(255, 200, 255, 0.3)":ui2.baseColor,ctx.beginPath();let sizeX=Math.abs(face2.annotations.leftEyeIris[3][0]-face2.annotations.leftEyeIris[1][0])/2,sizeY=Math.abs(face2.annotations.leftEyeIris[4][1]-face2.annotations.leftEyeIris[2][1])/2;ctx.ellipse(face2.annotations.leftEyeIris[0][0],face2.annotations.leftEyeIris[0][1],sizeX,sizeY,0,0,2*Math.PI),ctx.stroke(),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?"rgba(255, 255, 200, 0.3)":ui2.baseColor,ctx.fill())}if(face2.annotations&&face2.annotations.rightEyeIris){ctx.strokeStyle=ui2.useDepth?"rgba(255, 200, 255, 0.3)":ui2.baseColor,ctx.beginPath();let sizeX=Math.abs(face2.annotations.rightEyeIris[3][0]-face2.annotations.rightEyeIris[1][0])/2,sizeY=Math.abs(face2.annotations.rightEyeIris[4][1]-face2.annotations.rightEyeIris[2][1])/2;ctx.ellipse(face2.annotations.rightEyeIris[0][0],face2.annotations.rightEyeIris[0][1],sizeX,sizeY,0,0,2*Math.PI),ctx.stroke(),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?"rgba(255, 255, 200, 0.3)":ui2.baseColor,ctx.fill())}}}}}var lastDrawnPose=[];async function drawBody(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.lineJoin="round";for(let i=0;ia.part==="leftShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightShoulder"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightHip"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftHip"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftShoulder"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="leftHip"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="leftKnee"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftAnkle"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="rightHip"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightKnee"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightAnkle"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="leftShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="leftElbow"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftWrist"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="rightShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightElbow"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightWrist"),part&&path.lineTo(part.position.x,part.position.y)),ctx.stroke(path)}}}async function drawHand(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.lineJoin="round";for(let hand of result){if(ctx.font=ui2.baseFont,ctx.lineWidth=ui2.baseLineWidth,ui2.drawBoxes&&(ctx.lineWidth=ui2.baseLineWidth,ctx.beginPath(),ctx.strokeStyle=ui2.baseColor,ctx.fillStyle=ui2.baseColor,ctx.rect(hand.box[0],hand.box[1],hand.box[2],hand.box[3]),ctx.fillStyle="black",ctx.fillText("hand",hand.box[0]+3,1+hand.box[1]+ui2.baseLineHeight,hand.box[2]),ctx.fillStyle=ui2.baseLabel,ctx.fillText("hand",hand.box[0]+2,0+hand.box[1]+ui2.baseLineHeight,hand.box[2]),ctx.stroke()),ui2.drawPoints&&(hand.landmarks&&hand.landmarks.length>0))for(let point of hand.landmarks)ctx.fillStyle=ui2.useDepth?`rgba(${127.5+2*point[2]}, ${127.5-2*point[2]}, 255, 0.5)`:ui2.baseColor,ctx.beginPath(),ctx.arc(point[0],point[1],2,0,2*Math.PI),ctx.fill();if(ui2.drawPolygons){let addPart=part=>{if(!part)return;for(let i=0;i0?i-1:0][0],part[i>0?i-1:0][1]),ctx.lineTo(part[i][0],part[i][1]),ctx.stroke()};addPart(hand.annotations.indexFinger),addPart(hand.annotations.middleFinger),addPart(hand.annotations.ringFinger),addPart(hand.annotations.pinky),addPart(hand.annotations.thumb)}}}var draw_default={face:drawFace,body:drawBody,hand:drawHand,gesture:drawGesture},instance=0,CSScreated=!1,theme={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function createCSS(){if(CSScreated)return;let css=` +2Q==`,version11="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig2={}){this.tf=tfjs_esm_exports,this.version=version11,this.config=mergeDeep(config_default,userConfig2),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig2){this.state="load";let timeStamp=now2();userConfig2&&(this.config=mergeDeep(this.config,userConfig2)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig2={}){this.state="image",this.config=mergeDeep(this.config,userConfig2);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig2={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig2),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig2){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig2&&(this.config=mergeDeep(this.config,userConfig2));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};async function drawGesture(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.font=ui2.baseFont,ctx.fillStyle=ui2.baseLabel;let i=1;for(let gesture2=0;gesture21&&what[1].length>0){let person=where2[1]>0?`#${where2[1]}`:"",label=`${where2[0]} ${person}: ${what[1]}`;ctx.fillStyle="black",ctx.fillText(label,8,2+i*ui2.baseLineHeight),ctx.fillStyle=ui2.baseLabel,ctx.fillText(label,6,0+i*ui2.baseLineHeight),i+=1}}}async function drawFace(result,canvas,ui2,triangulation){if(!result)return;let ctx=canvas.getContext("2d");for(let face2 of result){ctx.font=ui2.baseFont,ctx.strokeStyle=ui2.baseColor,ctx.fillStyle=ui2.baseColor,ctx.lineWidth=ui2.baseLineWidth,ctx.beginPath(),ui2.drawBoxes&&ctx.rect(face2.box[0],face2.box[1],face2.box[2],face2.box[3]);let labels=[];if(face2.genderConfidence&&labels.push(`${Math.trunc(100*face2.genderConfidence)}% ${face2.gender||""}`),face2.age&&labels.push(`age: ${face2.age||""}`),face2.iris&&labels.push(`iris: ${face2.iris}`),face2.emotion&&face2.emotion.length>0){let emotion2=face2.emotion.map(a=>`${Math.trunc(100*a.score)}% ${a.emotion}`);labels.push(emotion2.join(" "))}ctx.fillStyle=ui2.baseLabel;for(let i=0;iface2.mesh[index]),path=new Path2D;path.moveTo(points[0][0],points[0][1]);for(let point of points)path.lineTo(point[0],point[1]);path.closePath(),ctx.strokeStyle=ui2.useDepth?`rgba(${127.5+2*points[0][2]}, ${127.5-2*points[0][2]}, 255, 0.3)`:ui2.baseColor,ctx.stroke(path),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?`rgba(${127.5+2*points[0][2]}, ${127.5-2*points[0][2]}, 255, 0.3)`:ui2.baseColor,ctx.fill(path))}if(face2.annotations&&face2.annotations.leftEyeIris){ctx.strokeStyle=ui2.useDepth?"rgba(255, 200, 255, 0.3)":ui2.baseColor,ctx.beginPath();let sizeX=Math.abs(face2.annotations.leftEyeIris[3][0]-face2.annotations.leftEyeIris[1][0])/2,sizeY=Math.abs(face2.annotations.leftEyeIris[4][1]-face2.annotations.leftEyeIris[2][1])/2;ctx.ellipse(face2.annotations.leftEyeIris[0][0],face2.annotations.leftEyeIris[0][1],sizeX,sizeY,0,0,2*Math.PI),ctx.stroke(),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?"rgba(255, 255, 200, 0.3)":ui2.baseColor,ctx.fill())}if(face2.annotations&&face2.annotations.rightEyeIris){ctx.strokeStyle=ui2.useDepth?"rgba(255, 200, 255, 0.3)":ui2.baseColor,ctx.beginPath();let sizeX=Math.abs(face2.annotations.rightEyeIris[3][0]-face2.annotations.rightEyeIris[1][0])/2,sizeY=Math.abs(face2.annotations.rightEyeIris[4][1]-face2.annotations.rightEyeIris[2][1])/2;ctx.ellipse(face2.annotations.rightEyeIris[0][0],face2.annotations.rightEyeIris[0][1],sizeX,sizeY,0,0,2*Math.PI),ctx.stroke(),ui2.fillPolygons&&(ctx.fillStyle=ui2.useDepth?"rgba(255, 255, 200, 0.3)":ui2.baseColor,ctx.fill())}}}}}var lastDrawnPose=[];async function drawBody(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.lineJoin="round";for(let i=0;ia.part==="leftShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightShoulder"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightHip"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftHip"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftShoulder"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="leftHip"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="leftKnee"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftAnkle"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="rightHip"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightKnee"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightAnkle"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="leftShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="leftElbow"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="leftWrist"),part&&path.lineTo(part.position.x,part.position.y)),root=result[i].keypoints.find(a=>a.part==="rightShoulder"),root&&(path.moveTo(root.position.x,root.position.y),part=result[i].keypoints.find(a=>a.part==="rightElbow"),part&&path.lineTo(part.position.x,part.position.y),part=result[i].keypoints.find(a=>a.part==="rightWrist"),part&&path.lineTo(part.position.x,part.position.y)),ctx.stroke(path)}}}async function drawHand(result,canvas,ui2){if(!result)return;let ctx=canvas.getContext("2d");ctx.lineJoin="round";for(let hand of result){if(ctx.font=ui2.baseFont,ctx.lineWidth=ui2.baseLineWidth,ui2.drawBoxes&&(ctx.lineWidth=ui2.baseLineWidth,ctx.beginPath(),ctx.strokeStyle=ui2.baseColor,ctx.fillStyle=ui2.baseColor,ctx.rect(hand.box[0],hand.box[1],hand.box[2],hand.box[3]),ctx.fillStyle="black",ctx.fillText("hand",hand.box[0]+3,1+hand.box[1]+ui2.baseLineHeight,hand.box[2]),ctx.fillStyle=ui2.baseLabel,ctx.fillText("hand",hand.box[0]+2,0+hand.box[1]+ui2.baseLineHeight,hand.box[2]),ctx.stroke()),ui2.drawPoints&&(hand.landmarks&&hand.landmarks.length>0))for(let point of hand.landmarks)ctx.fillStyle=ui2.useDepth?`rgba(${127.5+2*point[2]}, ${127.5-2*point[2]}, 255, 0.5)`:ui2.baseColor,ctx.beginPath(),ctx.arc(point[0],point[1],2,0,2*Math.PI),ctx.fill();if(ui2.drawPolygons){let addPart=part=>{if(!part)return;for(let i=0;i0?i-1:0][0],part[i>0?i-1:0][1]),ctx.lineTo(part[i][0],part[i][1]),ctx.stroke()};addPart(hand.annotations.indexFinger),addPart(hand.annotations.middleFinger),addPart(hand.annotations.ringFinger),addPart(hand.annotations.pinky),addPart(hand.annotations.thumb)}}}var draw_default={face:drawFace,body:drawBody,hand:drawHand,gesture:drawGesture},instance=0,CSScreated=!1,theme={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function createCSS(){if(CSScreated)return;let css=` :root { --rounded: 0.2rem; } .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10; box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; } diff --git a/dist/demo-browser-index.js.map b/dist/demo-browser-index.js.map index 90035658..7e9d850d 100644 --- a/dist/demo-browser-index.js.map +++ b/dist/demo-browser-index.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js", "../demo/draw.js", "../demo/menu.js", "../demo/gl-bench.js", "../demo/browser.js"], - "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "async function drawGesture(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.font = ui.baseFont;\n ctx.fillStyle = ui.baseLabel;\n let i = 1;\n for (let gesture = 0; gesture < result.length; gesture++) {\n const [where, what] = Object.entries(result[gesture]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n ctx.fillStyle = 'black';\n ctx.fillText(label, 8, 2 + (i * ui.baseLineHeight));\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText(label, 6, 0 + (i * ui.baseLineHeight));\n i += 1;\n }\n }\n}\n\nasync function drawFace(result, canvas, ui, triangulation) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n for (const face of result) {\n ctx.font = ui.baseFont;\n ctx.strokeStyle = ui.baseColor;\n ctx.fillStyle = ui.baseColor;\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n if (ui.drawBoxes) {\n ctx.rect(face.box[0], face.box[1], face.box[2], face.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels = [];\n // labels.push(`${Math.trunc(100 * face.confidence)}% face`);\n if (face.genderConfidence) labels.push(`${Math.trunc(100 * face.genderConfidence)}% ${face.gender || ''}`);\n // if (face.genderConfidence) labels.push(face.gender);\n if (face.age) labels.push(`age: ${face.age || ''}`);\n if (face.iris) labels.push(`iris: ${face.iris}`);\n if (face.emotion && face.emotion.length > 0) {\n const emotion = face.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n ctx.fillStyle = ui.baseLabel;\n for (let i = 0; i < labels.length; i++) {\n ctx.fillStyle = 'black';\n ctx.fillText(labels[i], face.box[0] + face.box[2] + 9, ((i + 1) * ui.baseLineHeight) + face.box[1] + 9);\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText(labels[i], face.box[0] + face.box[2] + 8, ((i + 1) * ui.baseLineHeight) + face.box[1] + 8);\n }\n ctx.fillStyle = ui.baseColor;\n ctx.stroke();\n ctx.lineWidth = 1;\n if (face.mesh) {\n if (ui.drawPoints) {\n for (const point of face.mesh) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * point[2])}, ${127.5 - (2 * point[2])}, 255, 0.5)` : ui.baseColor;\n ctx.beginPath();\n ctx.arc(point[0], point[1], 2, 0, 2 * Math.PI);\n ctx.fill();\n }\n }\n if (ui.drawPolygons) {\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => face.mesh[index]);\n const path = new Path2D();\n path.moveTo(points[0][0], points[0][1]);\n for (const point of points) {\n path.lineTo(point[0], point[1]);\n }\n path.closePath();\n ctx.strokeStyle = ui.useDepth ? `rgba(${127.5 + (2 * points[0][2])}, ${127.5 - (2 * points[0][2])}, 255, 0.3)` : ui.baseColor;\n ctx.stroke(path);\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * points[0][2])}, ${127.5 - (2 * points[0][2])}, 255, 0.3)` : ui.baseColor;\n ctx.fill(path);\n }\n }\n // iris: array[center, left, top, right, bottom]\n if (face.annotations && face.annotations.leftEyeIris) {\n ctx.strokeStyle = ui.useDepth ? 'rgba(255, 200, 255, 0.3)' : ui.baseColor;\n ctx.beginPath();\n const sizeX = Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(face.annotations.leftEyeIris[4][1] - face.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(face.annotations.leftEyeIris[0][0], face.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? 'rgba(255, 255, 200, 0.3)' : ui.baseColor;\n ctx.fill();\n }\n }\n if (face.annotations && face.annotations.rightEyeIris) {\n ctx.strokeStyle = ui.useDepth ? 'rgba(255, 200, 255, 0.3)' : ui.baseColor;\n ctx.beginPath();\n const sizeX = Math.abs(face.annotations.rightEyeIris[3][0] - face.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(face.annotations.rightEyeIris[0][0], face.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? 'rgba(255, 255, 200, 0.3)' : ui.baseColor;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose = [];\nasync function drawBody(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n if (!lastDrawnPose[i] && ui.buffered) lastDrawnPose[i] = { ...result[i] };\n ctx.fillStyle = ui.baseColor;\n ctx.strokeStyle = ui.baseColor;\n ctx.font = ui.baseFont;\n ctx.lineWidth = ui.baseLineWidth;\n if (ui.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.beginPath();\n if (ui.buffered) {\n lastDrawnPose[i].keypoints[pt].position.x = (lastDrawnPose[i].keypoints[pt].position.x + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt].position.y = (lastDrawnPose[i].keypoints[pt].position.y + result[i].keypoints[pt].position.y) / 2;\n ctx.arc(lastDrawnPose[i].keypoints[pt].position.x, lastDrawnPose[i].keypoints[pt].position.y, 2, 0, 2 * Math.PI);\n } else {\n ctx.arc(result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 2, 0, 2 * Math.PI);\n }\n ctx.fill();\n }\n }\n if (ui.drawPolygons) {\n const path = new Path2D();\n let root;\n let part;\n // torso\n root = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // leg left\n root = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // leg right\n root = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // arm left\n root = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // arm right\n root = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // draw all\n ctx.stroke(path);\n }\n }\n}\n\nasync function drawHand(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.lineJoin = 'round';\n for (const hand of result) {\n ctx.font = ui.baseFont;\n ctx.lineWidth = ui.baseLineWidth;\n if (ui.drawBoxes) {\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n ctx.strokeStyle = ui.baseColor;\n ctx.fillStyle = ui.baseColor;\n ctx.rect(hand.box[0], hand.box[1], hand.box[2], hand.box[3]);\n ctx.fillStyle = 'black';\n ctx.fillText('hand', hand.box[0] + 3, 1 + hand.box[1] + ui.baseLineHeight, hand.box[2]);\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText('hand', hand.box[0] + 2, 0 + hand.box[1] + ui.baseLineHeight, hand.box[2]);\n ctx.stroke();\n }\n if (ui.drawPoints) {\n if (hand.landmarks && hand.landmarks.length > 0) {\n for (const point of hand.landmarks) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * point[2])}, ${127.5 - (2 * point[2])}, 255, 0.5)` : ui.baseColor;\n ctx.beginPath();\n ctx.arc(point[0], point[1], 2, 0, 2 * Math.PI);\n ctx.fill();\n }\n }\n }\n if (ui.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n ctx.strokeStyle = ui.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : ui.baseColor;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(hand.annotations.indexFinger);\n addPart(hand.annotations.middleFinger);\n addPart(hand.annotations.ringFinger);\n addPart(hand.annotations.pinky);\n addPart(hand.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport default {\n face: drawFace,\n body: drawBody,\n hand: drawHand,\n gesture: drawGesture,\n};\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.2rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 7px 0 10px; background: darkslategray; border-radius: 0.2rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n this.paramLogger = () => {};\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (55 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 22 / 60 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "import Human from '../dist/human.esm.js';\nimport draw from './draw.js';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = {}; // add any user configuration overrides\n/*\nconst userConfig = {\n face: { enabled: false },\n body: { enabled: true },\n hand: { enabled: false },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseColor: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n baseLabel: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n baseFontProto: 'small-caps {size} \"Segoe UI\"',\n baseLineWidth: 12,\n crop: true,\n columns: 2,\n busy: false,\n facing: true,\n useWorker: false,\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n drawBoxes: true,\n drawPoints: false,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n console: true,\n maxFPSframes: 10,\n modelsPreload: true,\n menuWidth: 0,\n menuHeight: 0,\n camera: {},\n detectFPS: [],\n drawFPS: [],\n buffered: false,\n drawThread: null,\n detectThread: null,\n framesDraw: 0,\n framesDetect: 0,\n bench: false,\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n document.getElementById('status').innerText = msg;\n}\n\nlet original;\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = human.config.face.embedding.enabled ? 'block' : 'none';\n if (!human.config.face.embedding.enabled) return;\n if ((result?.face?.length > 0) && (result?.face[0].embedding?.length !== 192)) return;\n if (!original) {\n original = result;\n document.getElementById('compare-canvas').getContext('2d').drawImage(original.canvas, 0, 0, 200, 200);\n }\n const simmilarity = human.simmilarity(original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('simmilarity').innerText = `simmilarity: ${Math.trunc(1000 * simmilarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // enable for continous performance monitoring\n // console.log(result.performance);\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) result.canvas = await human.image(input, userConfig);\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n await draw.face(result.face, canvas, ui, human.facemesh.triangulation);\n await draw.body(result.body, canvas, ui);\n await draw.hand(result.hand, canvas, ui);\n await draw.gesture(result.gesture, canvas, ui);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n const size = Math.trunc(window.devicePixelRatio * (8 + (4 * canvas.width / window.innerWidth)));\n ui.baseFont = ui.baseFontProto.replace(/{size}/, `${size}px`);\n ui.baseLineHeight = size + 4;\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n console.log('worker', worker);\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('Processing image:', image.src);\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = canvas.height / (window.innerWidth / thumb.width);\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n userConfig.videoOptimized = true;\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n document.getElementById('play').style.display = 'none';\n userConfig.videoOptimized = false;\n const size = Math.trunc(window.devicePixelRatio * (8 + (4 * ui.columns)));\n ui.baseFont = ui.baseFontProto.replace(/{size}/, `${size}px`);\n ui.baseLineHeight = size + 2;\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('Running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', () => setupCamera());\n menu.display.addBool('camera facing', ui, 'facing', () => setupCamera());\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', ui, 'useDepth');\n menu.display.addBool('draw boxes', ui, 'drawBoxes');\n menu.display.addBool('draw polygons', ui, 'drawPolygons');\n menu.display.addBool('Fill Polygons', ui, 'fillPolygons');\n menu.display.addBool('draw points', ui, 'drawPoints');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled');\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative');\n menu.image.addBool('sepia', human.config.filter, 'sepia');\n menu.image.addBool('vintage', human.config.filter, 'vintage');\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome');\n menu.image.addBool('technicolor', human.config.filter, 'technicolor');\n menu.image.addBool('polaroid', human.config.filter, 'polaroid');\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled');\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled');\n menu.models.addBool('face iris', human.config.face.iris, 'enabled');\n menu.models.addBool('face age', human.config.face.age, 'enabled');\n menu.models.addBool('face gender', human.config.face.gender, 'enabled');\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled');\n menu.models.addBool('hand pose', human.config.hand, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('face compare', human.config.face.embedding, 'enabled', (val) => {\n original = null;\n human.config.face.embedding.enabled = val;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function main() {\n log('demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n }\n if (!ui.useWorker) {\n status('initializing');\n await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('ready');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], - "mappings": "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,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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EZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SA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", + "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js", "../demo/draw.js", "../demo/menu.js", "../demo/gl-bench.js", "../demo/browser.js"], + "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA\nAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu\nbmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob\nIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgo\nKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgBAAEAAwEhAAIRAQMRAf/E\nAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAE\nEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH\nSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1\ntre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB\nAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET\nIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla\nY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG\nx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKACigApGOKAML\nXp8xlF5A7V4X8RtYs7PzfNImnx8sa8Kp9z3q2tEgp6angWs62ZZ5CTGoJ6DArGNz5p+UrID6EUrF\nPUlW1EuN0XNW7PQ2L5j3JnoKXN0KijqNP0eYoqXBdgPuuo+ZPeupisWn2Jd4+0r924XgsQOCff3/\nAJ1FzRKxDqGii6m3siiQ8F1XGfXI6YNWLfRbiRQMkcZI9fpTDluT2/h6Qy8gDPbtmtG38JeY480Z\n5zSLUTZg8M28YwYxjAArXtdPt402qgHbpSaLWhma3o0Uqk7Nx9DWLaaVblgPs6qRyds2M/gRSQp9\nzZOni2iWS2hlQ+kjYz9OMGrdjq89vIPPVhj+8M/lQyDq9P1WOYBlMZz1AOD+VdDaTiReOKulK0jO\ntHmi0WDTlr0TyxRVhT8tJjIX+9SUxHXUV553BRQAVBcPhSBTSuxPY86+IGti0s5I7dsORy9fM3i6\n8e8mfDO5P90ZrWWiJicNPpZZtxV/xrW0jQt4DOv6Vk2dEEdTY6BHuB25rpbPSo0QARjP0qTRI17W\nwA/hFaMWmoQMgflQXYsDS142rU9tpqqenfNA7GgtihxkdKuRW6qMY/GkDZY8sY4Ap4hXbyB+VArk\nEtuH4wPyrk/EGkOm+a3jw3suRQLc5i38SX9hJ9nnY+XnBUdPyNdFY6pa3KkkAE9l6f8AfJ/pSJT6\nGhDmI+Zb4ZRycdv6ium0nUhKFydrelTsNnS2829RnrVgV6NKXNG55lWPLIM81Op+WrZkRMfmNNzT\nA7GivPO4KKAEY4XNYWt3vkwPg4OK0giJdjw/xrqhm87Zs8tc7pX5A+leSajf6aHYJ50kn4AZpTep\nrBWRm2Vobm4BXfyehPFdnpmnBFUY5rI2SN63tlToK0YI+KZpFF+3QdavwoKTLtoW0Toaswpk5pCb\nLCxipAhoIuP2dKevHXoaYDylRyxhlwRQI4nxVoCXWZI1GfpXGtbSWjYPGP73+NIGupt6TqMsLruZ\nih4xnP5V09mQ+JLd8gn0xSYJnVaVdkook69K34zuUGunDS3Rx4qOzHVIp4rrOMY3NJQI7GivPO8K\nKAILt9kZrz3xlebYiu8KCCWb0XvW0NFch6ysfO3jLVjfXLIn+pQkKorl7WxNxIPl71g2dUUdpo+l\npBGvHPet23iC8ihFosrxirkHQUFo0IF4FXI1O726CpKLacCrMJoJLYHAPpTwucHpSRJJ5e4AZI9x\nUqpxzVpCuOC8cUpQUMRnXttuB4rjNdsYyeVwfXpmpGmcvcQyafMCFJjPY10eg34BUg4DcZP8jUO4\nHaRq3lLNF+IHet7R7jz7c56rwa2wz9+xhiVeFy/T1PFegeaNPWigDsc0ZrzzvDNIaAM7VpNqdegr\nxL4l6kywyRhseZ19lrdfAZL4jxYg3Fw20d63tJsdrDI5rm3Z3R0R0Mce1eKnQYAplIkWrMJ45oZS\nNO3PHbNXIyfpSGWowSOasxLUiZdjFSqtNEMkUemKlAGKsRJjAppFAiORMjmsTVrNZEO4cfSoZSOD\n1eJ7WXBUzQZ+7nkfSo7e2Ei+ZaMzxntjBX2NSU1Y6/wxqojiEFzkA8KTXYaUoWRyv3W5rSjpNHPX\n+BmpSg8V6J5gUUAdhRXnneFFAGHrTfu5PpXzj8S70/aZtxzztXFbv4DKHxHI+H4GZiz9zxXXW8G3\nGBXMjvLRXAx0oPGPSmMVeOnWrMTYpFI0bcg1fh54xmgovRcD3qxETSIZcRvzp+/BpEkqsBUqsM9K\nq4Em4Gkxk0yRGXrVW6i8yFhkg+tJjRxGsWrxllkUMh9eK5uMz6bcebbnfG33kPcVkay2OntPKuo0\nnhXI67c8qa7Lw3c+adjcEDGK1paSRhVV4s6A0or0jyRRQ1AHX0V553hRQBz+vNtt5z3xXzX8Qbdm\nuic5YnOMdK3l8JnTXvlbwpYl+WySOgrp5YfLOOB9O1c62O7qQkc+9RsKChFPWp4DluOlSykaNruH\nArUgHShFNF2NT1qxGO3NBmyxGcE1N2560CFzjrUysO9JAPDDjFOVuKoQuSRTWouBkazbCa3cd8cV\nwF7IISQccHBzUSWpV9C3o1x5b5GAjdQD1rs9DjC3kckbEhqKfxIzn8LOupRXqnkPccBSkUAzraK8\n87wooA5rxMSI3HqK8B8bQl9Q8sffY5b/AAraXwkUviNrw9pH2W1ViMMRTdRjw4HpWNtDti9TPc4P\nFQs2M5qdyyMHLcfjV63HTAoBGtap0wK0YxigpsuRDtVhVYd6GQydVwwIqdRnqKCR23I5pCMUW6gD\nYNKuetAEise9KTxQBWuFyhrznxNZkXjFeN3I+tTIZg2OqmzmxNF0PO3vXp/g2+hukVl4zyPanTXv\nJmVR+60dpThXpnlPceopWFAbnV0V553hSGgRynjC5FujOey14Ssp1HxNmTnc+a3kvcIpv37HoEYQ\nQmMdVHSsnVbYJF5jVk0dsNzlruVIsl2wKxbjWrVHILjg1CRbZJb+ILHPzyhfStODWLQgFJFYd+el\nUJM27HUIXxhga1Y5lLVLKLkMnoauxnPPrSEx7ShF+Y/n2qrc6xBbhizDAqkK1zJuvG9nbg8ZA681\nly/Ei052RO3uKAsZlx8QGd8xxvt9Aa1NH8dK7AXMcip64zigdkdrZX8F7EJLdwwNXMkrz1qRMRly\nCK4TxmpidWI49felPYSOMmi80NIoOV6qRzXYeA5SskYPfirpfEjGr8LPWVHyD6U4CvQPL3ZItOYc\nUDOoNFeed4Uhpks4H4iE/Z5MeleMeGULeLgjds10S+BGdL+Jc9OSBU2Huc5Nc74yvUtrcDBrJnZF\n63PJdXvLy/lKWw46bvQVz82jXhkLO5Y+9ZlsYthcRnbIjY9R3q3awTRkEM3WmJI6C0ea3dGRsr1x\nXY6TqW9FLHnjrUs0izpLK5DDjofSta3ckH09KRUkZuuTvFGdvPauE1Y3U6Mqbssf/rUxHPTaJPK2\nZmJPbBqzY6DCZh5xJC9s9aBJHU6dpemJjfEmfetJtI0+VPkUr/unFOxdiextHs33W07YHQHk11mk\nXb3KbZ1xIvcd6LEyWho4Nct41sTPYb16ipexCPPZN+wYGCvH1rrPAEJmvkPoc1VL4kZVvgZ6yFwK\ncBXoHkkqinFaVyzo80GuE7WJRQSziPiGdthK5HQV4x4J/wBI8WPIewNdEvgRNL42emO/yj1UHNef\neNpRczbC+I17DvWT2OqJxc0sMK4TCisy41q0hfEkqj8aixdwTXNOlwvmqD9anS9tXH7uVG+hosO4\n/wC0oOhrR0+6G4YNIEzsNEuCxAPNdjZruA4xxUmjINSjURksOlcbqFykbnjFA1sYGoassaknCqO5\nrl7rxhGm7yBnBxuJq0rkSlYpw+NLlsfd5P8AerVsvHEqSBHwPVgcgVpyMyVXU3rXxcHYETAk+hru\n/DWti6ZSTyOKzZqndHaxvvUGq2rQ+dYyqR24qWI8dvbr7LqDxyDAzXpvw6FvIxePGSM06Xxoyr/A\nzviKFHNegeX1J41zUhXioGbuaSuM6wpCaBHG/EcA6HN/exxXjXw2jL67cv8A3Qa6H8CFR+NnoWpO\nI4XI44rxLxrqjQzSEsQM1gdSPM9U1uR1YbmWIdXHf2rmpIb67YS28UrRlsLI3c/jW0VZGUpO5pW1\njfLNOjahawzwReYI5cjzMkDavHJ5/SrVv9uhtPtVxCPLBwzxnlT9KGghLU3tKvvPjHzbl7EGuisJ\nGRxWLOg7nRXJEbDjmvSNK+aFSfSoZr0KutRkphc4NcRrdkVjL9aVio7Hk3iqS8ubhrWzUlsZY9kG\ncZNc5D4aee5MclzJIFTzHAO0MfatqSOWu7bFS1srDUZEis0vIZoUxPvfcC+4/dx2xjr712XiTwXb\nWmlQ6hol3cRhoFd4rlg3zY5wR0GelavQwjq7GD4etdVvSnk2wAB+9v8A8mvcfA2kXiRo0/UdcDis\nZnTTulqeoWqbUAJqWUb42X1FZlnjfjSwlGrr5S/eNdD4RkvLAAQ4yRyaUZcruVKl7TQ9I0G+mnzH\nckFwM8VuIK7ac3KF2eXiKapz5UWYxipNtMyNejNch0jSar3cjR27uoyQCRVRWom9DxTx54gu5fMi\nlbKdMVjfCZPNlv5v9rFbVHpYqjGzbOn8SzFI9o715L4u0r7arYzk+lYdTqSujy7U/C0u4vHk+WwO\nxuh9q3J9dgvbdVukMV1EwbDDgn04rZMwlHoZ+orZ6hfQ3RWVnQYCgZAq+8U0ln5NtBsV2yxYcfgK\nJtW0CnB31LlroVwJ1nQLGDjeP7w+lb0dsFxjrWB0tHS6NuWPJ6A16ToUm63T3Gallr4S7cxiTjrX\nPaxaF7dlVeSMUhxZ5jd+H7qCa4eF3DSE5x3zXN3Wk6jbyeaiFWUY6ZyPStYS5SalPmVipFbX0E4c\nW0alvmPHJrag0rVvEE6LdljGpG2NRtQD+tW5XMI0uU9M8NeFo9PiQhecDIIrtrOMIoG3H4VlJm9t\nC6CB06VPGM1IHLeItGS6uw+ORT7e3jsbQvj7gzUNam0JaWE+HN7NqOqX80n3FO1RXo8YzXdS+BHk\n4z+KyzGPapcU2YIv7qQtiuaxvcaWqG4O6FwfSrS1JbPnrxoxkv7qIfejcitj4V2f2exumI+8+aKn\nxHTT+G5d8Txlm4rjLxMsQwzWT3OiK0Mm6sEkVsAcjFc1d+FEmlGwEDPQVopaEuOpr6f4ZWNAu3tW\nvHpAj5ZQcUFIWaDjGMVUMQ3cVDBmvbhY7QAV2nh+T/R1yeKhlrY31+b61FcQK6nIoJMi401WblRi\nqr6PCw5UYq9y+YgOgWzNkRrx3xWjp+nx2v3FQcelAbmko9anQ4GBUNisPHWr1qMrQhS2K11HvmYV\nhamcxSRZ5xRIqluS/DKAQQXZxyXrvo2FdlL4EeZjH+/ZbjNSZpswLNBrE1Gt7VE4ODVIlnh/j61F\nj4lmeTGyUbq6LwdEqWbeX0YbhSqfEddP4Bddj4JIrhL5d8h7VjI6oLQqKNzelWre3yc4/ClFjaL6\nwqBxxUUxwCKu5BmXRA6c+9ZjP83FSBoQuPs4BrsNBlUW659KmRrDY6G1lyQtW3Hy0lqQ1qVJnAbm\noy3b9KYJCqRj3o4zRctIlhjLHmpSuOBRbQOpLGpPFaES7UqkZzKN1KsEc87/AHUUmvPLTVGv72aQ\nk7WJwKmRrQ3ud74Ltilgz4++2a6iNDXdS0gjyMU71my7GpqTbxSbMki3SViajTTHqkSeR/GeyZmg\nnQHkEE1S+F+oPPavBL96I4/Cia1udVF+4dVrkW+Fq8+v4tjMDWUkdVJ6WM0cNV+F+MVmjUcZgqnP\n1qpNNnkcVRLiZtxIS1UzzIF7mghlxUZpVQdq6nTVdAoAOKzkbQWhvwM6gMM1twOJYx3NOJE11Kt1\nH1/pVVlwBkk+9NocXoOQ45FPj+fkUJFF2NSB700v/hTEty5ZpkjvVyUgcCq6GM9zC14/8Se6GcZQ\n1574Xs5WkI2HBPHFQ1dm1KSSZ7Rotn9l0+KPHIHNacae1dy0Vjxaj5ptlhVp+2s2CJ9ppCKzuWNx\nzSFc1SYrHNeNdIGpaYw25ZeRXmvheyk0jVpEdcLJ0q3ZxNKTa0O3vQHg/DNcHrsJDmsmjspnNzNt\nfFIJ24GazOhC+azDmgZIOOKBsp3J2qSaZodubq58yQ4QAnmhGT3NO18pb7BORmu205LfYpyKVkWp\nOxr5gKYWoIZWgfGfloFq1qTPLubnGO1RPtxg4P0oBAkY/hBz6VNDDkZ6AU0W2WSdqkdKr9ZOaGSj\nVtcLHmnOcgmmYvcz7mBLy3MbdD1q9ouiRK6bUAVeelOC1InPlidSsWMDFOCEdq3uefykqrinYqGy\nrFvApMVka2DAowKAsMkRXQqwyDXn/iWyitNQ3qPl6itIvRoF8RXinW4tQ6HI6GuW8SIVBPalc6qe\n5x9x97r3qruwTjrWZ0ksZ9TUmcDNAmZ9/wAoao63rR0+w22MLPtAzt6mghmfofiB76LdJBJBIp5D\nd/oa7bSdWLIPnpDi9TM8TeKdas51XTbIyxd3J/pXS+E/EFxqNoFu7do5OmD60maHWrnZyDRkn/69\nMlEyOR0xntVoNx+FUgYjPxg4FLCuWDZyKQr2RoRnP0qO+nEFpJITgAUzLqZnhu6+0rknOTXpOmwJ\nFbrt5yMmnHYyr6Oxb2ijaKLnPYMClwKQWK3n0hn+lachHOJ9pNNN0apQFzsY10a4v4hXQh0xpieQ\nMA1XLZNjhK80cT8OdV+3Wl3A7ZZJCw+hrR1qLcjZ/CsbnfHRnFXseHJArOYYbrUs1uPhYbuatqFP\nByfSkMq3UIINYkto+87Tx6GkSxfsDbflGD7CtTw/pk4nzITtPIFMFudsukh4Rxz71paTpKwP5jcn\n0qTRy0NORMDgVCqewoJTJgAoxjntTiTu7fWmFxAcnn1q3EPl+X8KZMi4gKqB1Peob/Tv7Us5bfeU\nyOoq4R5nYxqT5I8xieH9J1DTbvyJELRg8ODwa9Ms5mSFV9BWiptbnNVrKdmif7Q1KLg96XIZc5Is\npNL5pqeUrmMtZs0jzV08phchaY00zH1p2ZNxjS1g+LdJOt6U9ssmxjyGp2urDjLlaZzng/wUPDqz\nTSTmWeTrjpVjVk3Rvjr2rnqQ5dDvo1XUd2cTqSNk9OKxXGCeKxZ1DAxHTr2q5C/y8GokUhsz54qu\nuCxzSQjQ0+FZblR2ro4bZYiMVQ0dBb7Qi5x0qzuG5QOh71LYErDufpSeWrHnimIXbjkUjLkH1Hem\ngGxryc+tXI19KYmWegq9YLiLJ7mtqS945cS7QsWehqxA9dEjz4krPSxyZqbFFhGxUm6smjRM55Lk\nHvSvNxXTY57kLT+9MNwKdhXGm5FIbkU7Bca1wMEVhaiuQcVhXWiZ14R6tHGanGBI2OtYkqEHjgVy\ns9ErEeo6UBsHipKEZs5qpPdRxcbhx70NCSuybTNWihc5brW9Fq6vjMnFSdEIdDRi8RRKygZbHFbu\nm6nb3RA3gMegNJhOm0jbXGOoxTuCc1Rz3FyoGKawz9KaAVcZqeMgCmIkB4FaUTbYwB6V00Fuzixb\n0SFMuDU8Mlbs4UPeXHeiOXkUrDuXYnyKk3cVk0ap6HMxxketSMhrcwRC0dMMZFMQ3yzSeVQAeUaz\n9Vj8uPd271nVV4m+GdpnHX67pCeKyLtBtNcR6xlk9RVeWTb3qRnO6trgttyIfm71z7ai8j7/AJmN\nDNqUVa5Yi1AnjynHuBV+11YJhWWXcP8AZNSzqgmaEerSsf3NtIQP4mGKtRavdRgMIpVI9KjU0a7n\nR6T43uYQI7qN2Tpkqciu503VVuQGAYZHQjFVc4alPlZrpKGAznpTwxOc9+lWjIlUACnM4XApiLNk\nnmvnsK0NvpXZRVonmYqV52GsmanhXitTmFkSiJTSAvwrxUxXIrJ7miOfjf1pzNWxkRlqYWpgJupu\n6gQbuahvIxPA6eo4pNXVioS5WmefakGhndH4INZs5DJXA10PaTurmLO21uKpSZqGMoXGnRzBiyjd\n9Kx5rcQS428fSkjanLoaOliHGZFB56VswW+mtPufcBsGOAfmxz+tFkd8HpoaUx09FAtFY8DO71qb\nSms/Nb7RbecG6AEjFLS5c78t+p0djpVs9wsyQiJAdyr1rW+zqjErzSe559Sbk9S3C+MA1bjbgE1S\nMSXzMVG0vNUI2tPKrAuCMnrVzNd0PhR49W/O2xrHmp4TxVMzQshpIzzQBehqesnuaI5VGzT2bitz\nFEbNTC1ADS1JupgG6l3UAc14s04yR/aYRll+8BXCtLncDXFWjys9TCz5oW7GddH5qqNzWDOgQnC8\nVSuo1kHzAGkPYopEY2+RWxV23Vzj5G/Kg3jWaNazhZuqNXS6TaKhB2c0jR1nJWOlhOxRxU4YkCgx\nY0OQatQyDbyaaFYe8uF4NY3iC9ltbVGj43NTIL3h7WzMihjzXVQXYYDdW9Cf2WcOJpfaRZ3g9KsQ\nmupnCLIabGeaAL0LcVY3cVmzRHIxtUhetzEjZqjLUAIWpN1ArhupwagAfDKQ3Q1594v0c2bm6tx+\n5Y8j+6ayrR5onThp8s7dzkZjuqAAmuBnqC7c0iwgtzSA0rWzjfGRW3ZadDu4AoNYo2rfS4v7orSh\n05UA2r0pDbsTm29KRottBNyJ0wpJ9KhD7f6U0ikNWffIFBz60zVUW52ow4UcUN6EPcx44WsbgOmd\nua7TT5Bd24KHnFKnLlZFSN4koluLdueRWvp14swweG9DXoxldHlTjYtzGoo25qzEvwtUxas2jRPQ\n5CNqkLVsYoYzUzdQA3dSFqBBmnqaBhuqhriCXTpVIzxUz+Fl03aSPI9QTypW2/dz0qKNw3SvOPZR\nMqin8VLKRcs3O4Cuk0w/MDjt1NBtHY6O2IIHY1pxgFaETIRwMkjtVSUEk4570MlFW5bap6dKzWm8\n1tqH8aY+hp2FvGoGayNevVt7/ap4xzUvYjqTLtvLPcvJxSaVcyWsxTnFZlnT2t15xHmCtOBYwQy4\nB9q7cPO+jPPxFO2qLEj5HWo42+aus4HpoX4W4FTF+KlotbHII9SFuK0MUNZqiLUDE3UbqBBupwag\nBc1DefPbyD/ZND2KjujyPWlKzuPesRZjHJXms9lMuw3StjnmphKDSLTJ7OfE3JrpbO4GQc9qlnRA\n3LO82k5NbFvdADkjBoCSHyXIIIzgVQvdRigT7wzjgUzO1jHknlvG7qnp61etYFQDIpCZoqVijzXn\n3iC8EmsOuaCGb/heR/s0ijkVv6fbxy3QMg5xmsnuX0Ldzut3+UYTPWk+2GJSe+M1pFtamcldalmx\n1eO4XaThhWnC+TXqR2PHqL3maUJ4qRjxSEjj42qXdxVmaGs1MJoATfSbqBAG5p6mgAzTJTmNvpQU\ntzzHXY83D/U1zF5FhjgV5r3Pa6FMsV5HWnLe7RhqBRdmTwagN2d2K2rPU1C5LAnPrUs6Iysbdrq6\nf3gK0BrUKj/WClY05iM6xLOcQAj3NT29uznfKSzHuadzNu7NSBFjHNSm5VO9IRnajqoWMhTzXFtA\nbvUfMduSeg702Qz0rS7FbTToQFwzjJqaGTFyfK5PQViyzUuFmuIdgGABya5u/vTaN5cnUHFUmLoZ\nzyskwlgJweSK6zQdUEwVJeGr0aUrxPLxEfe0OrhPAqVjxWhznGRtUwatDK4jNxURbmkAm6jNABup\n6tQAFqhupNtu59qUnZFwV5JHnWsHdIx96w5lz15rzT2uhRmt85xWbcxMnUGmZlB0bdxmrNvFIcfM\n350mWjbs7YkDJY/jW5ZWW4jikWkdNp9mqYJFaJdEHHakUULu/VB1rLn1Ld/FgetMGYd/qWSQmSa0\n/AemS32pfa7piLeLkg9z6UmQtz0W7uQ2cZx0A9BVzR7cAea6j2rPqX0L99KRat5A6Dk1wOoKZ52a\nYfMORTYRLujiGWEq6/NWza2yKQVHNdOHerRy4laJo6TTnbbtb8KuM3Fdh5z3OJjbmpt3FaMxAtUZ\nagBN1GaQBzTwaAAms3VbjERUGsa07RsdeFpuUuY4jUjljWTKK4j02RE4IpJYFk6imQkVl0xWarsO\nmAEcUi0bNnZBR0rWtoguMCkUi21wI161mXuocEKaYXMS4u+pY/hVCSWSY4HT0pEmlouiSahdpEBl\nmOceleiwWcNjClvHgJH97Hc1EmVFFi3Czy7mwIl/WtJbjP7uLgd/apQ2VNVvtsBhiPzdK5S4nAuR\nnqOCaTGi9pcytPlU+XpmumtWII44rah8ZjiNIXRuWeNvvViQ/LXpJWPJbu7nCRvVkNxVsxBmqJmo\nEPiXca0YLMuOlJsuKuPlsSi5IrNuG8s4HWs5VEkbwoOTKsk+FJY4rC1K53k1xTk5O7PSpwVNWRzt\n4cms+WpKICtSLTETQj5q0YeBSGiys23pUguGxQMq3E59ayrm4x3yaAKiRtO2WPHcmhruKFxFajzZ\nScA44qRHoXhuMaLpxaUg6hcDLMf4F9KlhuDeXGASIl+8azZslYma68y48m1+7nFW5rtbRNhb5z1p\niMKbUg0zuW4A4rPgb7VdKXOMmpA7HRbMS7nUYiUda0lkQOBngVrS+JGdbWLRt2bAx5BqeQ/LXpnj\nPQ4GJ+ashuK0MhWaoWcA0AaOmASMK7jRNPWYBmHyiuepO2x10qfcv6vYxCzYqoGK4HVYVTJrmb5l\nc6oaM5TUJ8EgGsG4kLNUHT0M64OaqMMikSRsuKbnFMRLG3zVehOaGNE445NNlnVFpDMu6uie9Vo1\n8z5mOAOST2pDK91cNN+5tsrH3PrW54a06KxT7fdrlh/q1Pc+tJ6IUdZGvHPLezMcnBOWbsPap5r3\nylFtbdT1xUWNWzU0/Zbwlgfmx8zGsHWtRHmMqE59aAMyNifvHPc1f0gtPdqkY5JosJHeNci2tktY\neuPnNY+oXWZEVJNrZ9aun8SIq/CzodHuriIokhDIR1ronbKZr0o6o8ipoz//2Q==`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "async function drawGesture(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.font = ui.baseFont;\n ctx.fillStyle = ui.baseLabel;\n let i = 1;\n for (let gesture = 0; gesture < result.length; gesture++) {\n const [where, what] = Object.entries(result[gesture]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n ctx.fillStyle = 'black';\n ctx.fillText(label, 8, 2 + (i * ui.baseLineHeight));\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText(label, 6, 0 + (i * ui.baseLineHeight));\n i += 1;\n }\n }\n}\n\nasync function drawFace(result, canvas, ui, triangulation) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n for (const face of result) {\n ctx.font = ui.baseFont;\n ctx.strokeStyle = ui.baseColor;\n ctx.fillStyle = ui.baseColor;\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n if (ui.drawBoxes) {\n ctx.rect(face.box[0], face.box[1], face.box[2], face.box[3]);\n }\n // silly hack since fillText does not suport new line\n const labels = [];\n // labels.push(`${Math.trunc(100 * face.confidence)}% face`);\n if (face.genderConfidence) labels.push(`${Math.trunc(100 * face.genderConfidence)}% ${face.gender || ''}`);\n // if (face.genderConfidence) labels.push(face.gender);\n if (face.age) labels.push(`age: ${face.age || ''}`);\n if (face.iris) labels.push(`iris: ${face.iris}`);\n if (face.emotion && face.emotion.length > 0) {\n const emotion = face.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n ctx.fillStyle = ui.baseLabel;\n for (let i = 0; i < labels.length; i++) {\n ctx.fillStyle = 'black';\n ctx.fillText(labels[i], face.box[0] + face.box[2] + 9, ((i + 1) * ui.baseLineHeight) + face.box[1] + 9);\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText(labels[i], face.box[0] + face.box[2] + 8, ((i + 1) * ui.baseLineHeight) + face.box[1] + 8);\n }\n ctx.fillStyle = ui.baseColor;\n ctx.stroke();\n ctx.lineWidth = 1;\n if (face.mesh) {\n if (ui.drawPoints) {\n for (const point of face.mesh) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * point[2])}, ${127.5 - (2 * point[2])}, 255, 0.5)` : ui.baseColor;\n ctx.beginPath();\n ctx.arc(point[0], point[1], 2, 0, 2 * Math.PI);\n ctx.fill();\n }\n }\n if (ui.drawPolygons) {\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => face.mesh[index]);\n const path = new Path2D();\n path.moveTo(points[0][0], points[0][1]);\n for (const point of points) {\n path.lineTo(point[0], point[1]);\n }\n path.closePath();\n ctx.strokeStyle = ui.useDepth ? `rgba(${127.5 + (2 * points[0][2])}, ${127.5 - (2 * points[0][2])}, 255, 0.3)` : ui.baseColor;\n ctx.stroke(path);\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * points[0][2])}, ${127.5 - (2 * points[0][2])}, 255, 0.3)` : ui.baseColor;\n ctx.fill(path);\n }\n }\n // iris: array[center, left, top, right, bottom]\n if (face.annotations && face.annotations.leftEyeIris) {\n ctx.strokeStyle = ui.useDepth ? 'rgba(255, 200, 255, 0.3)' : ui.baseColor;\n ctx.beginPath();\n const sizeX = Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(face.annotations.leftEyeIris[4][1] - face.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(face.annotations.leftEyeIris[0][0], face.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? 'rgba(255, 255, 200, 0.3)' : ui.baseColor;\n ctx.fill();\n }\n }\n if (face.annotations && face.annotations.rightEyeIris) {\n ctx.strokeStyle = ui.useDepth ? 'rgba(255, 200, 255, 0.3)' : ui.baseColor;\n ctx.beginPath();\n const sizeX = Math.abs(face.annotations.rightEyeIris[3][0] - face.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(face.annotations.rightEyeIris[0][0], face.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (ui.fillPolygons) {\n ctx.fillStyle = ui.useDepth ? 'rgba(255, 255, 200, 0.3)' : ui.baseColor;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose = [];\nasync function drawBody(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n if (!lastDrawnPose[i] && ui.buffered) lastDrawnPose[i] = { ...result[i] };\n ctx.fillStyle = ui.baseColor;\n ctx.strokeStyle = ui.baseColor;\n ctx.font = ui.baseFont;\n ctx.lineWidth = ui.baseLineWidth;\n if (ui.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.beginPath();\n if (ui.buffered) {\n lastDrawnPose[i].keypoints[pt].position.x = (lastDrawnPose[i].keypoints[pt].position.x + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt].position.y = (lastDrawnPose[i].keypoints[pt].position.y + result[i].keypoints[pt].position.y) / 2;\n ctx.arc(lastDrawnPose[i].keypoints[pt].position.x, lastDrawnPose[i].keypoints[pt].position.y, 2, 0, 2 * Math.PI);\n } else {\n ctx.arc(result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y, 2, 0, 2 * Math.PI);\n }\n ctx.fill();\n }\n }\n if (ui.drawPolygons) {\n const path = new Path2D();\n let root;\n let part;\n // torso\n root = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // leg left\n root = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // leg right\n root = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // arm left\n root = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // arm right\n root = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (root) {\n path.moveTo(root.position.x, root.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part) path.lineTo(part.position.x, part.position.y);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part) path.lineTo(part.position.x, part.position.y);\n }\n // draw all\n ctx.stroke(path);\n }\n }\n}\n\nasync function drawHand(result, canvas, ui) {\n if (!result) return;\n const ctx = canvas.getContext('2d');\n ctx.lineJoin = 'round';\n for (const hand of result) {\n ctx.font = ui.baseFont;\n ctx.lineWidth = ui.baseLineWidth;\n if (ui.drawBoxes) {\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n ctx.strokeStyle = ui.baseColor;\n ctx.fillStyle = ui.baseColor;\n ctx.rect(hand.box[0], hand.box[1], hand.box[2], hand.box[3]);\n ctx.fillStyle = 'black';\n ctx.fillText('hand', hand.box[0] + 3, 1 + hand.box[1] + ui.baseLineHeight, hand.box[2]);\n ctx.fillStyle = ui.baseLabel;\n ctx.fillText('hand', hand.box[0] + 2, 0 + hand.box[1] + ui.baseLineHeight, hand.box[2]);\n ctx.stroke();\n }\n if (ui.drawPoints) {\n if (hand.landmarks && hand.landmarks.length > 0) {\n for (const point of hand.landmarks) {\n ctx.fillStyle = ui.useDepth ? `rgba(${127.5 + (2 * point[2])}, ${127.5 - (2 * point[2])}, 255, 0.5)` : ui.baseColor;\n ctx.beginPath();\n ctx.arc(point[0], point[1], 2, 0, 2 * Math.PI);\n ctx.fill();\n }\n }\n }\n if (ui.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = ui.baseLineWidth;\n ctx.beginPath();\n ctx.strokeStyle = ui.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : ui.baseColor;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(hand.annotations.indexFinger);\n addPart(hand.annotations.middleFinger);\n addPart(hand.annotations.ringFinger);\n addPart(hand.annotations.pinky);\n addPart(hand.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport default {\n face: drawFace,\n body: drawBody,\n hand: drawHand,\n gesture: drawGesture,\n};\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.2rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 7px 0 10px; background: darkslategray; border-radius: 0.2rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n this.paramLogger = () => {};\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (55 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 22 / 60 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "import Human from '../dist/human.esm.js';\nimport draw from './draw.js';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = {}; // add any user configuration overrides\n/*\nconst userConfig = {\n face: { enabled: false },\n body: { enabled: true },\n hand: { enabled: false },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseColor: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n baseLabel: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n baseFontProto: 'small-caps {size} \"Segoe UI\"',\n baseLineWidth: 12,\n crop: true,\n columns: 2,\n busy: false,\n facing: true,\n useWorker: false,\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n drawBoxes: true,\n drawPoints: false,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n console: true,\n maxFPSframes: 10,\n modelsPreload: true,\n menuWidth: 0,\n menuHeight: 0,\n camera: {},\n detectFPS: [],\n drawFPS: [],\n buffered: false,\n drawThread: null,\n detectThread: null,\n framesDraw: 0,\n framesDetect: 0,\n bench: false,\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n document.getElementById('status').innerText = msg;\n}\n\nlet original;\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = human.config.face.embedding.enabled ? 'block' : 'none';\n if (!human.config.face.embedding.enabled) return;\n if ((result?.face?.length > 0) && (result?.face[0].embedding?.length !== 192)) return;\n if (!original) {\n original = result;\n document.getElementById('compare-canvas').getContext('2d').drawImage(original.canvas, 0, 0, 200, 200);\n }\n const simmilarity = human.simmilarity(original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('simmilarity').innerText = `simmilarity: ${Math.trunc(1000 * simmilarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // enable for continous performance monitoring\n // console.log(result.performance);\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) result.canvas = await human.image(input, userConfig);\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n await draw.face(result.face, canvas, ui, human.facemesh.triangulation);\n await draw.body(result.body, canvas, ui);\n await draw.hand(result.hand, canvas, ui);\n await draw.gesture(result.gesture, canvas, ui);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n const size = Math.trunc(window.devicePixelRatio * (8 + (4 * canvas.width / window.innerWidth)));\n ui.baseFont = ui.baseFontProto.replace(/{size}/, `${size}px`);\n ui.baseLineHeight = size + 4;\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n console.log('worker', worker);\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('Processing image:', image.src);\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = canvas.height / (window.innerWidth / thumb.width);\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n userConfig.videoOptimized = true;\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n document.getElementById('play').style.display = 'none';\n userConfig.videoOptimized = false;\n const size = Math.trunc(window.devicePixelRatio * (8 + (4 * ui.columns)));\n ui.baseFont = ui.baseFontProto.replace(/{size}/, `${size}px`);\n ui.baseLineHeight = size + 2;\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('Running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', () => setupCamera());\n menu.display.addBool('camera facing', ui, 'facing', () => setupCamera());\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', ui, 'useDepth');\n menu.display.addBool('draw boxes', ui, 'drawBoxes');\n menu.display.addBool('draw polygons', ui, 'drawPolygons');\n menu.display.addBool('Fill Polygons', ui, 'fillPolygons');\n menu.display.addBool('draw points', ui, 'drawPoints');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled');\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative');\n menu.image.addBool('sepia', human.config.filter, 'sepia');\n menu.image.addBool('vintage', human.config.filter, 'vintage');\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome');\n menu.image.addBool('technicolor', human.config.filter, 'technicolor');\n menu.image.addBool('polaroid', human.config.filter, 'polaroid');\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled');\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled');\n menu.models.addBool('face iris', human.config.face.iris, 'enabled');\n menu.models.addBool('face age', human.config.face.age, 'enabled');\n menu.models.addBool('face gender', human.config.face.gender, 'enabled');\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled');\n menu.models.addBool('hand pose', human.config.hand, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled');\n menu.models.addHTML('
');\n menu.models.addBool('face compare', human.config.face.embedding, 'enabled', (val) => {\n original = null;\n human.config.face.embedding.enabled = val;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function main() {\n log('demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n }\n if (!ui.useWorker) {\n status('initializing');\n await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('ready');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], + "mappings": "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,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACp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I,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,G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E,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MAC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", "names": [] } diff --git a/dist/demo-browser-index.json b/dist/demo-browser-index.json index 3b1c49a0..b4383e1a 100644 --- a/dist/demo-browser-index.json +++ b/dist/demo-browser-index.json @@ -1,7 +1,7 @@ { "inputs": { "dist/human.esm.js": { - "bytes": 1839457, + "bytes": 1839826, "imports": [] }, "demo/draw.js": { @@ -38,14 +38,14 @@ "dist/demo-browser-index.js.map": { "imports": [], "inputs": {}, - "bytes": 2199861 + "bytes": 1870322 }, "dist/demo-browser-index.js": { "imports": [], "exports": [], "inputs": { "dist/human.esm.js": { - "bytesInOutput": 1832217 + "bytesInOutput": 1832586 }, "demo/draw.js": { "bytesInOutput": 7726 @@ -60,7 +60,7 @@ "bytesInOutput": 19563 } }, - "bytes": 1886077 + "bytes": 1886446 } } } diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index f8ddbd68..21a4c387 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -5,14 +5,14 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);import{version as tfjs}from"@tensorflow/tfjs/package.json";import{version as versionCore}from"@tensorflow/tfjs-core/package.json";import{version as versionData}from"@tensorflow/tfjs-data/package.json";import{version as versionLayers}from"@tensorflow/tfjs-layers/package.json";import{version as versionConverter}from"@tensorflow/tfjs-converter/package.json";import{version_cpu}from"@tensorflow/tfjs-backend-cpu/dist/index.js";import{version_webgl}from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{version_wasm}from"@tensorflow/tfjs-backend-wasm/dist/index.js";import*as dist_star from"@tensorflow/tfjs-core/dist/index.js";import*as dist_star2 from"@tensorflow/tfjs-layers/dist/index.js";import*as dist_star3 from"@tensorflow/tfjs-converter/dist/index.js";import*as data from"@tensorflow/tfjs-data/dist/index.js";import*as dist_star4 from"@tensorflow/tfjs-backend-cpu/dist/index.js";import*as dist_star5 from"@tensorflow/tfjs-backend-webgl/dist/index.js";import*as dist_star6 from"@tensorflow/tfjs-backend-wasm/dist/index.js";var require_tfjs_esm=__commonJS(exports=>{__export(exports,{data:()=>data,version:()=>version2});__exportStar(exports,dist_star);__exportStar(exports,dist_star2);__exportStar(exports,dist_star3);__exportStar(exports,dist_star4);__exportStar(exports,dist_star5);__exportStar(exports,dist_star6);var version2={tfjs,"tfjs-core":versionCore,"tfjs-data":versionData,"tfjs-layers":versionLayers,"tfjs-converter":versionConverter,"tfjs-backend-cpu":version_cpu,"tfjs-backend-webgl":version_webgl,"tfjs-backend-wasm":version_wasm}}),require_blazeface=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile2(name,data3){if(!data3||!data3.kernels)return;let maxResults=5,time=data3.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data3.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data3.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data3.newBytes,newTensors:data3.newTensors,peakBytes:data3.peakBytes,numKernelOps:data3.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile2}),require_age=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data3=ageT.dataSync();obj.age=Math.trunc(10*data3[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data3=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data3[0]-data3[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data3[0]>data3[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data3[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data3[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data3;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data3=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data3=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data3[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist4,diff)=>dist4+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data3=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data3=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data3=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data3)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);import{version as tfjs}from"@tensorflow/tfjs/package.json";import{version as versionCore}from"@tensorflow/tfjs-core/package.json";import{version as versionData}from"@tensorflow/tfjs-data/package.json";import{version as versionLayers}from"@tensorflow/tfjs-layers/package.json";import{version as versionConverter}from"@tensorflow/tfjs-converter/package.json";import{version_cpu}from"@tensorflow/tfjs-backend-cpu/dist/index.js";import{version_webgl}from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{version_wasm}from"@tensorflow/tfjs-backend-wasm/dist/index.js";import*as dist_star from"@tensorflow/tfjs-core/dist/index.js";import*as dist_star2 from"@tensorflow/tfjs-layers/dist/index.js";import*as dist_star3 from"@tensorflow/tfjs-converter/dist/index.js";import*as data from"@tensorflow/tfjs-data/dist/index.js";import*as dist_star4 from"@tensorflow/tfjs-backend-cpu/dist/index.js";import*as dist_star5 from"@tensorflow/tfjs-backend-webgl/dist/index.js";import*as dist_star6 from"@tensorflow/tfjs-backend-wasm/dist/index.js";var require_tfjs_esm=__commonJS(exports=>{__export(exports,{data:()=>data,version:()=>version2});__exportStar(exports,dist_star);__exportStar(exports,dist_star2);__exportStar(exports,dist_star3);__exportStar(exports,dist_star4);__exportStar(exports,dist_star5);__exportStar(exports,dist_star6);var version2={tfjs,"tfjs-core":versionCore,"tfjs-data":versionData,"tfjs-layers":versionLayers,"tfjs-converter":versionConverter,"tfjs-backend-cpu":version_cpu,"tfjs-backend-webgl":version_webgl,"tfjs-backend-wasm":version_wasm}}),require_blazeface=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile2(name,data3){if(!data3||!data3.kernels)return;let maxResults=5,time=data3.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data3.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data3.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data3.newBytes,newTensors:data3.newTensors,peakBytes:data3.peakBytes,numKernelOps:data3.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile2}),require_age=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data3=ageT.dataSync();obj.age=Math.trunc(10*data3[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data3=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data3[0]-data3[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data3[0]>data3[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data3[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data3[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data3;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data3=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data3=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data3[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist4,diff)=>dist4+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data3=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data3=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data3=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data3)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos=Math.cos(rotation),sin=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos*(1-lumR)+sin*-lumR,lumG+cos*-lumG+sin*-lumG,lumB+cos*-lumB+sin*(1-lumB),0,0,lumR+cos*-lumR+sin*.143,lumG+cos*(1-lumG)+sin*.14,lumB+cos*-lumB+sin*-.283,0,0,lumR+cos*-lumR+sin*-(1-lumR),lumG+cos*-lumG+sin*lumG,lumB+cos*(1-lumB)+sin*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xnew tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xnew tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,7 +731,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};export{Human as default}; +2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};export{Human as default}; /** * @license * Copyright 2020 Google LLC. All Rights Reserved. diff --git a/dist/human.esm-nobundle.js.map b/dist/human.esm-nobundle.js.map index 922fe67e..896dbc22 100644 --- a/dist/human.esm-nobundle.js.map +++ b/dist/human.esm-nobundle.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-browser.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "../src/human.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js"], - "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n"], - "mappings": "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,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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AG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;2BCzId,IAAM,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", + "sources": ["../src/tfjs/tf-browser.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "../src/human.js", "../src/tfjs/backend.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js"], + "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], + "mappings": "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,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,UC/viBd,sCAmBA,QAAoB,4CACU,gDACA,2CACL,8BAtBzB,AAwBA,qBAAyB,CACvB,MAAO,CAAC,EAAG,EAAG,EAAG,GACjB,YAAa,CAAC,EAAG,EAAG,EAAG,GACvB,aAAc,CAAC,EAAG,GAAI,GAAI,IAC1B,WAAY,CAAC,GAAI,GAAI,GAAI,IACzB,MAAO,CAAC,GAAI,GAAI,GAAI,IACpB,SAAU,CAAC,aA9Bb,MAkCE,0BACE,KAAK,aAAe,mBAGf,kBACL,MAAO,uBAGH,8BACJ,gBAAoB,KAAM,MAAK,aAAa,cAAc,MAAO,SACjE,GAAI,CAAC,YAAa,MAAO,GACzB,UAAc,GACd,qBAAyB,cACvB,gBAAoB,GACpB,GAAI,WAAW,UACb,cAAkB,QAAO,KAAK,kBAC5B,YAAY,KAAO,iBAAiB,KAAK,IAAI,OAAW,WAAW,UAAU,QAGjF,QAAY,WAAW,IAAM,CAC3B,KAAK,IAAI,EAAG,WAAW,IAAI,QAAQ,IACnC,KAAK,IAAI,EAAG,WAAW,IAAI,QAAQ,IACnC,KAAK,IAAI,MAAM,MAAM,GAAI,WAAW,IAAI,YAAY,IAAM,WAAW,IAAI,QAAQ,GACjF,KAAK,IAAI,MAAM,MAAM,GAAI,WAAW,IAAI,YAAY,IAAM,WAAW,IAAI,QAAQ,IAC/E,EACJ,MAAM,KAAK,CACT,WAAY,WAAW,WACvB,IACA,UAAW,WAAW,UACtB,cAGJ,MAAO,SAGX,QAAQ,SAAW,SAEnB,8BACE,qCAA2C,KAAM,SAAQ,IAAI,CAC3D,QAAO,KAAK,QAAU,AAAG,mBAAe,QAAO,KAAK,SAAS,UAAW,CAAE,UAAW,QAAO,KAAK,SAAS,UAAU,SAAS,eAAkB,KAC/I,QAAO,KAAK,UAAY,AAAG,mBAAe,QAAO,KAAK,SAAS,UAAW,CAAE,UAAW,QAAO,KAAK,SAAS,UAAU,SAAS,eAAkB,oBAE9H,GAAiB,2BAAa,kBAAmB,QAAO,KAAK,UAAmB,8BAChF,GAAiB,2BAAa,aAAc,cAAe,QAAO,KAAK,oBAC3E,GAAI,UAAS,cAC9B,MAAI,SAAO,KAAK,SAAS,IAAI,eAAe,QAAO,KAAK,SAAS,UAAU,MAAM,YAAY,MAC7F,AAAI,QAAO,KAAK,WAAW,IAAI,eAAe,QAAO,KAAK,SAAS,UAAU,MAAM,YAAY,MACxF,SAET,QAAQ,KAAO,QCnFf,6CAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,KAE9B,cAAkB,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,wBACxC,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,mBAC/C,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,QACtD,AAAI,MAAQ,WAAa,YAAe,UAAU,SAAS,EAAI,KAAK,SAAS,GAAO,WAAW,SAAS,EAAI,KAAK,SAAS,EAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,cAC3J,AAAI,MAAQ,WAAc,UAAU,SAAS,EAAI,KAAK,SAAS,EAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,oBACrG,AAAI,MAAQ,YAAe,WAAW,SAAS,EAAI,KAAK,SAAS,GAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,qBAG5G,iBAAqB,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,8BACxC,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,iBAC/D,AAAI,cAAgB,eAAe,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,WAAY,aAAa,SAAS,EAAI,cAAc,SAAS,EAAK,OAAS,YAElJ,MAAO,WAGT,QAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,GAAI,IAAI,GAAG,MAAQ,IAAI,GAAG,KAAK,OAAS,GACtC,cAAkB,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,KAAK,GACxD,AAAI,KAAK,IAAI,WAAa,GAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,kBAC3D,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,UAAU,UAAY,EAAI,QAAU,WAC3E,aAAiB,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IACvH,AAAI,SAAW,IAAK,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,mBACtD,cAAkB,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IACxH,AAAI,UAAY,IAAK,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,oBACvD,cAAkB,KAAK,IAAI,IAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,IAAI,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,KAAK,KACzI,AAAI,UAAY,IAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,SAAS,KAAK,MAAM,qBAC1E,cAAkB,IAAI,GAAG,KAAK,KAAK,GACnC,AAAI,KAAK,IAAI,WAAa,IAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,QAAQ,UAAY,EAAI,KAAO,WAGnG,MAAO,WAGT,QAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,KAC9B,YAAgB,GAChB,qBAA4B,QAAO,QAAQ,IAAI,GAAG,aAChD,AAAI,SAAW,YAAY,QAAQ,KAAK,CAAE,KAAM,OAAO,cAAe,SAAU,IAAI,KAEtF,GAAI,SAAW,QAAQ,OAAS,GAC9B,YAAgB,QAAQ,OAAO,UAAc,KAAK,SAAS,GAAK,EAAE,SAAS,GAAK,KAAO,WACvE,QAAQ,OAAO,UAAc,KAAK,SAAS,GAAK,EAAE,SAAS,GAAK,KAAO,GACvF,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,GAAG,QAAQ,gBAAgB,QAAQ,aAGzE,MAAO,aCvDT,qCAOA,iBAAqB,yCACnB,aAAiB,mCACf,MAAU,GAAI,QAAO,MAAQ,OAAS,eAAgB,MACtD,OAAO,QAAQ,EAAG,cAChB,YAAW,MAAQ,EACZ,kBAIM,sBACf,WAAe,GAAG,aAAa,MAI/B,GAHA,GAAG,aAAa,OAAQ,QACxB,GAAG,cAAc,QAEb,CAAC,GAAG,mBAAmB,OAAQ,GAAG,gBACpC,KAAM,IAAI,OAAM,4BAA6B,GAAG,iBAAiB,SAEnE,MAAO,SAGT,KAAK,QAAU,GACf,KAAK,UAAY,GAEjB,SAAa,SAAS,aAAc,GAAG,oBAC1B,SAAS,eAAgB,GAAG,iBAOzC,GALA,KAAK,GAAK,GAAG,gBACb,GAAG,aAAa,KAAK,GAAI,MACzB,GAAG,aAAa,KAAK,GAAI,MACzB,GAAG,YAAY,KAAK,IAEhB,CAAC,GAAG,oBAAoB,KAAK,GAAI,GAAG,aACtC,KAAM,IAAI,OAAM,yBAA0B,GAAG,kBAAkB,KAAK,KAGtE,GAAG,WAAW,KAAK,IAGnB,SAAS,aAAc,YAAa,KAAK,WACzC,YAAgB,MAAK,UACnB,KAAK,UAAU,GAAK,GAAG,kBAAkB,KAAK,GAAI,GAIpD,SAAS,aAAc,UAAW,KAAK,SACvC,SAAS,eAAgB,UAAW,KAAK,SACzC,YAAgB,MAAK,QACnB,KAAK,QAAQ,GAAK,GAAG,mBAAmB,KAAK,GAAI,qBAI5B,iBACvB,AAAK,QAAQ,QAAS,IACtB,eAAiB,iBACI,kBACF,4BACY,qBACP,CAAC,KAAM,mBACZ,UACN,WACC,iBACM,qBACE,aACN,OAAO,QAAU,SAAS,cAAc,8BAG5B,MAEjB,QAAQ,WAAW,SAC9B,GAAI,CAAC,GAAI,KAAM,IAAI,OAAM,+BAEzB,KAAK,UAAY,eAEf,SAAa,MAAM,UAAU,MAAM,KAAK,UAAW,UACpC,QAAQ,MAEvB,aAAa,KAAK,CAAE,KAAM,OAAQ,QAGpC,KAAK,MAAQ,WACX,aAAe,IAGjB,KAAK,MAAQ,iBAcX,GAbA,QAAQ,OAAM,MAAO,OAAM,QAC3B,WAAa,EAGb,AAAK,gBAAgB,gBAAiB,GAAG,iBACzC,GAAG,YAAY,GAAG,WAAY,gBAC9B,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,SAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,SAC1D,GAAG,WAAW,GAAG,WAAY,EAAG,GAAG,KAAM,GAAG,KAAM,GAAG,cAAe,QAGhE,aAAa,SAAW,EAE1B,eACO,QAGT,UAAa,EAAG,EAAI,aAAa,OAAQ,KACvC,aAAgB,IAAM,aAAa,OAAS,EAC5C,MAAU,aAAa,GACvB,EAAE,KAAK,MAAM,KAAM,EAAE,MAAQ,IAG/B,MAAO,UAGT,YAAgB,uBAEd,GAAI,QAAU,QAAU,SAAW,QAAW,OAQ9C,GANA,QAAQ,MAAQ,MAChB,OAAS,MACT,QAAQ,OAAS,OACjB,QAAU,OAGN,CAAC,eAEH,aAAiB,GAAI,cAAa,CAChC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EACrC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAGrC,AAAC,cAAgB,GAAG,eAAgB,GAAG,WAAW,GAAG,aAAc,eACnE,GAAG,WAAW,GAAG,aAAc,SAAU,GAAG,aAI5C,GAAG,YAAY,GAAG,+BAAgC,IAGpD,GAAG,SAAS,EAAG,EAAG,OAAQ,SAG1B,kBAAoB,CAAC,KAAM,2BAGD,gBAC1B,yBAAkB,OAAS,kBAAkB,QAC1C,0BAA0B,OAAQ,SAE9B,kBAAkB,kCAGO,uBAChC,QAAY,GAAG,oBACf,GAAG,gBAAgB,GAAG,YAAa,KAEnC,iBAAqB,GAAG,qBACxB,GAAG,iBAAiB,GAAG,aAAc,cAErC,YAAgB,GAAG,gBACnB,UAAG,YAAY,GAAG,WAAY,SAC9B,GAAG,WAAW,GAAG,WAAY,EAAG,GAAG,KAAM,MAAO,OAAQ,EAAG,GAAG,KAAM,GAAG,cAAe,MAEtF,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,QAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,QAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eAEtD,GAAG,qBAAqB,GAAG,YAAa,GAAG,kBAAmB,GAAG,WAAY,QAAS,GAEtF,GAAG,YAAY,GAAG,WAAY,MAC9B,GAAG,gBAAgB,GAAG,YAAa,MAE5B,CAAE,IAAK,gBAGF,gBACZ,WAAa,YACA,WACD,GAGZ,AAAI,aAAe,EAEjB,OAAS,eAGT,OAAS,oBAAoB,0BAA0B,QAEzD,aAGA,AAAI,cAAgB,CAAE,OAAQ,KAAK,cAGjC,QAAS,KACT,MAAQ,WAAa,IAAM,GAG3B,0BAA4B,0BAA2B,GAAK,EAC5D,OAAS,oBAAoB,0BAA0B,KAIzD,GAAG,YAAY,GAAG,WAAY,QAC9B,GAAG,gBAAgB,GAAG,YAAa,QAEnC,GAAG,UAAU,gBAAgB,QAAQ,MAAQ,MAAQ,GAAK,GAC1D,GAAG,WAAW,GAAG,UAAW,EAAG,mBAGV,yBACrB,GAAI,oBAAoB,gBACtB,uBAAkB,oBAAoB,gBACtC,GAAG,WAAW,gBAAgB,IACvB,gBAIT,gBAAkB,GAAI,cAAa,GAAI,OAAO,gBAAiB,gBAE/D,cAAkB,aAAa,2BACd,EAAI,UACrB,UAAG,wBAAwB,gBAAgB,UAAU,KACrD,GAAG,oBAAoB,gBAAgB,UAAU,IAAK,EAAG,GAAG,MAAO,GAAO,SAAU,EAAI,WACxF,GAAG,wBAAwB,gBAAgB,UAAU,IACrD,GAAG,oBAAoB,gBAAgB,UAAU,GAAI,EAAG,GAAG,MAAO,GAAO,SAAU,EAAI,WAEvF,oBAAoB,gBAAkB,gBAC/B,sBAGE,CAAE,aAAc,UAEd,GACb,OAAO,gBAAkB,CACvB,yBACA,sBACA,qBACA,oBACA,uBAEA,oBACA,YACA,mDACA,KACA,KAAK;AAAA,GAEP,OAAO,kBAAoB,CACzB,yBACA,oBACA,6BAEA,oBACA,0CACA,KACA,KAAK;AAAA,GAEP,YAAc,GAKd,QAAQ,YAAc,iBAEpB,MAAU,GAAI,cAAa,QAC3B,EAAE,IAAM,IACR,EAAE,IAAM,IACR,EAAE,KAAO,IACT,EAAE,KAAO,IAGT,WAAgB,EAAE,MAAQ,GAAK,EAAE,KAAO,GAAK,EAAE,KAAO,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,EAC7H,QAAQ,YAAY,OAAO,cAC3B,QAAQ,YAAY,OAAO,mBAEf,eAAe,QAC/B,GAAG,WAAW,QAAQ,QAAQ,EAAG,GACjC,SAGF,QAAQ,YAAY,OAAS,GAC7B,QAAQ,YAAY,OAAO,WAAa,CACtC,yBACA,oBACA,6BACA,uBAEA,oBACA,oCACA,6EACA,6EACA,kFACA,kFACA,KACA,KAAK;AAAA,GACP,QAAQ,YAAY,OAAO,cAAgB,CACzC,yBACA,oBACA,6BACA,uBAEA,oBACA,oCACA,gEACA,gEACA,oEACA,wBACA,KACA,KAAK;AAAA,GAEP,QAAQ,WAAa,qBACnB,MAAW,aAAc,GAAK,EAC9B,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,iBACnB,MAAW,SAAU,GAAK,EAAI,EAAI,IACtB,GAAI,GAAK,IACrB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,WAAW,KAGrB,QAAQ,SAAW,iBACjB,MAAW,SAAU,GAAK,IAChB,KAAQ,GAAI,GAEtB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,SAAW,WACjB,QAAQ,SAAS,KAGnB,QAAQ,IAAM,mBACZ,SAAY,WAAY,GAAK,IAAM,KAAK,GACxC,QAAY,KAAK,IAAI,cACT,KAAK,IAAI,eACR,UACA,UACA,KAEb,QAAQ,YAAY,CAClB,KAAO,IAAO,GAAI,MAAQ,IAAO,CAAC,KAAO,KAAO,IAAO,CAAC,KAAQ,IAAO,CAAC,KAAO,KAAO,IAAO,CAAC,KAAQ,IAAO,GAAI,MAAO,EAAG,EAC3H,KAAO,IAAO,CAAC,KAAQ,IAAO,KAAQ,KAAO,IAAO,GAAI,MAAQ,IAAO,IAAQ,KAAO,IAAO,CAAC,KAAQ,IAAO,MAAS,EAAG,EACzH,KAAO,IAAO,CAAC,KAAQ,IAAO,CAAE,GAAI,MAAQ,KAAO,IAAO,CAAC,KAAQ,IAAO,KAAO,KAAO,IAAO,GAAI,MAAQ,IAAO,KAAO,EAAG,EAC5H,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,oBAAsB,WAC5B,QAAQ,YAAY,CAClB,SAAW,QAAW,SAAW,EAAG,MACpC,SAAW,QAAW,SAAW,EAAG,MACpC,SAAW,QAAW,SAAW,EAAG,MACpC,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,MAAQ,WACd,QAAQ,YAAY,CAClB,KAAO,SAAW,UAAY,EAAG,EACjC,KAAO,SAAW,UAAY,EAAG,EACjC,KAAO,SAAW,UAAY,EAAG,EACjC,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,QAAU,WAChB,QAAQ,YAAY,CAClB,kBAAoB,mBAAqB,mBAAqB,EAAG,kBACjE,qBAAuB,kBAAoB,mBAAqB,EAAG,mBACnE,mBAAqB,oBAAsB,mBAAqB,EAAG,mBACnE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,eAAiB,WACvB,QAAQ,YAAY,CAClB,kBAAoB,kBAAoB,oBAAsB,EAAG,kBACjE,mBAAqB,kBAAoB,mBAAqB,EAAG,kBACjE,kBAAoB,mBAAqB,kBAAoB,EAAG,kBAChE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,YAAY,CAClB,mBAAoB,mBAAqB,oBAAsB,EAAG,kBAClE,oBAAsB,mBAAoB,oBAAsB,EAAG,mBACnE,oBAAsB,mBAAqB,mBAAoB,EAAG,kBAClE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,YAAc,WACpB,QAAQ,YAAY,CAClB,mBAAoB,mBAAqB,oBAAsB,EAAG,mBAClE,mBAAqB,mBAAoB,oBAAsB,EAAG,mBAClE,kBAAoB,mBAAqB,kBAAmB,EAAG,mBAC/D,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,SAAW,WACjB,QAAQ,YAAY,CAClB,MAAO,MAAQ,MAAQ,EAAG,EAC1B,MAAQ,MAAO,MAAQ,EAAG,EAC1B,MAAQ,MAAQ,MAAO,EAAG,EAC1B,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAOhB,QAAQ,YAAc,iBACpB,MAAU,GAAI,cAAa,mBACR,EAAI,kBACJ,EAAI,gBAEP,eAAe,QAAQ,YAAY,QACnD,GAAG,WAAW,QAAQ,QAAQ,EAAG,GACjC,GAAG,UAAU,QAAQ,QAAQ,GAAI,WAAY,YAC7C,SAGF,QAAQ,YAAY,OAAS,CAC3B,yBACA,oBACA,6BACA,mBACA,sBAEA,oBACA,2CACA,4DACA,mEAEA,6DACA,sCACA,6DAEA,oEACA,6DACA,4CAEA,kBACA,yCACA,yCACA,wCACA,0BACA,KACA,KAAK;AAAA,GAEP,QAAQ,YAAc,WACpB,QAAQ,YAAY,KAAK,KAAM,CAC7B,EAAG,EAAG,EACN,EAAG,GAAI,EACP,EAAG,EAAG,KAIV,QAAQ,OAAS,WACf,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAI,EAAG,EACP,GAAI,EAAG,EACP,GAAI,EAAG,KAIX,QAAQ,OAAS,WACf,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAI,GAAI,GACR,EAAG,EAAG,EACN,EAAG,EAAG,KAIV,QAAQ,QAAU,iBAChB,MAAU,QAAU,EACpB,QAAQ,YAAY,KAAK,KAAM,CAC7B,EAAG,GAAK,EAAG,EACX,GAAK,EAAG,EAAI,EAAI,EAAG,GAAK,EACxB,EAAG,GAAK,EAAG,KAIf,QAAQ,OAAS,eACf,MAAU,MAAQ,EAClB,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAK,EAAG,GAAK,EAAG,EAChB,GAAK,EAAG,EAAG,EAAI,EACf,EAAG,EAAI,EAAG,EAAI,KAOlB,QAAQ,KAAO,eACb,cAAmB,KAAO,EAAK,iBACZ,KAAO,EAAK,gBAEf,eAAe,QAAQ,KAAK,QAG5C,GAAG,UAAU,QAAQ,QAAQ,GAAI,EAAG,WACpC,MAAM,KAAK,cAGX,GAAG,UAAU,QAAQ,QAAQ,GAAI,UAAW,GAC5C,SAGF,QAAQ,KAAK,OAAS,CACpB,yBACA,oBACA,6BACA,mBAEA,oBACA,4BACA,8FACA,yFACA,wFACA,wFACA,wFACA,uFACA,uFACA,uFACA,uFACA,uFACA,wFACA,wFACA,wFACA,yFACA,8FACA,KACA,KAAK;AAAA,GAKP,QAAQ,SAAW,eACjB,cAAmB,KAAQ,iBACR,KAAQ,gBAEX,eAAe,QAAQ,SAAS,QAGhD,GAAG,UAAU,QAAQ,QAAQ,KAAM,UAAW,WAC9C,SAGF,QAAQ,SAAS,OAAS,CACxB,yBACA,oBACA,qBACA,6BAEA,yCACA,uCACA,IAEA,oBACA,4BACA,oCACA,6CACA,KACA,KAAK;AAAA,IAGT,QAAQ,OAAS,mBC7lBjB,mCACA,QAAoB,uCACK,uCAGV,eACC,KAKhB,iCACE,WACA,GAAI,gBAAoB,YACtB,OAAS,AAAG,UAAM,YAElB,kBAAsB,MAAM,cAAgB,MAAM,YAAc,MAAM,OAAU,MAAM,OAAU,MAAM,MAAM,GAAK,iBAC1F,MAAM,eAAiB,MAAM,aAAe,MAAM,QAAW,MAAM,OAAU,MAAM,MAAM,GAAK,cACnG,2BACC,eAKnB,GAJA,AAAI,QAAO,OAAO,MAAQ,EAAG,YAAc,QAAO,OAAO,MACpD,AAAI,QAAO,OAAO,OAAS,GAAG,aAAc,cAAiB,SAAO,OAAO,OAAS,iBACzF,AAAI,QAAO,OAAO,OAAS,EAAG,aAAe,QAAO,OAAO,OACtD,AAAI,QAAO,OAAO,MAAQ,GAAG,cAAe,eAAkB,SAAO,OAAO,MAAQ,gBACrF,CAAC,aAAe,CAAC,aACnB,WAAI,uBAAwB,OACrB,KAET,AAAI,EAAC,UAAa,SAAS,QAAU,aAAiB,SAAS,SAAW,eACxE,UAAY,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,YAAa,cAAgB,SAAS,cAAc,UAC9H,AAAI,SAAS,QAAU,aAAa,UAAS,MAAQ,aACrD,AAAI,SAAS,SAAW,cAAc,UAAS,OAAS,eAE1D,QAAY,SAAS,WAAW,MAGhC,GAFA,AAAI,gBAAiB,WAAW,IAAI,aAAa,MAAO,EAAG,GACtD,IAAI,UAAU,MAAO,EAAG,EAAG,cAAe,eAAgB,EAAG,EAAG,SAAS,MAAO,SAAS,QAC1F,QAAO,OAAO,SAChB,AAAI,EAAC,KAAK,IAAM,CAAC,WAAc,SAAS,QAAU,UAAU,OAAW,SAAS,SAAW,UAAU,SACnG,WAAa,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,SAAS,MAAO,SAAS,QAAU,SAAS,cAAc,UACrI,AAAI,UAAU,QAAU,SAAS,OAAO,WAAU,MAAQ,SAAS,OACnE,AAAI,UAAU,SAAW,SAAS,QAAQ,WAAU,OAAS,SAAS,QACtE,KAAK,GAAK,AAAG,QAAI,MAAM,WAAa,GAAY,gBAAO,CAAE,OAAQ,YAAe,MAElF,KAAK,GAAG,QACR,KAAK,GAAG,UAAU,aAAc,QAAO,OAAO,YAC9C,AAAI,QAAO,OAAO,WAAa,GAAG,KAAK,GAAG,UAAU,WAAY,QAAO,OAAO,UAC9E,AAAI,QAAO,OAAO,YAAc,GAAG,KAAK,GAAG,UAAU,UAAW,QAAO,OAAO,WAC9E,AAAI,QAAO,OAAO,OAAS,GAAG,KAAK,GAAG,UAAU,OAAQ,QAAO,OAAO,MACtE,AAAI,QAAO,OAAO,aAAe,GAAG,KAAK,GAAG,UAAU,aAAc,QAAO,OAAO,YAClF,AAAI,QAAO,OAAO,MAAQ,GAAG,KAAK,GAAG,UAAU,MAAO,QAAO,OAAO,KACpE,AAAI,QAAO,OAAO,UAAU,KAAK,GAAG,UAAU,YAC9C,AAAI,QAAO,OAAO,OAAO,KAAK,GAAG,UAAU,SAC3C,AAAI,QAAO,OAAO,SAAS,KAAK,GAAG,UAAU,WAC7C,AAAI,QAAO,OAAO,OAAO,KAAK,GAAG,UAAU,SAC3C,AAAI,QAAO,OAAO,YAAY,KAAK,GAAG,UAAU,cAChD,AAAI,QAAO,OAAO,aAAa,KAAK,GAAG,UAAU,eACjD,AAAI,QAAO,OAAO,UAAU,KAAK,GAAG,UAAU,YAC9C,AAAI,QAAO,OAAO,WAAa,GAAG,KAAK,GAAG,UAAU,WAAY,QAAO,OAAO,UAC9E,KAAK,GAAG,MAAM,UAGd,OAAW,GACX,GAAI,IACF,aAAiB,GAAI,YAAW,UAAU,MAAQ,UAAU,OAAS,aACnD,GAAI,YAAW,UAAU,MAAQ,UAAU,OAAS,GACtE,GAAG,WAAW,EAAG,EAAG,UAAU,MAAO,UAAU,OAAQ,GAAG,KAAM,GAAG,cAAe,UAGlF,MAAQ,EACR,UAAa,UAAU,OAAS,EAAG,GAAK,EAAG,IACzC,UAAa,EAAG,EAAI,UAAU,MAAO,KACnC,UAAe,GAAI,EAAI,UAAU,OAAS,EAC1C,UAAU,KAAO,SAAS,MAAQ,GAClC,UAAU,KAAO,SAAS,MAAQ,GAClC,UAAU,KAAO,SAAS,MAAQ,GAGtC,UAAU,KAAO,eAGnB,WAAY,SAEd,WACA,GAAI,UAAU,MACZ,UAAc,CAAC,UAAU,OAAQ,UAAU,MAAO,GAClD,OAAS,AAAG,aAAS,UAAU,KAAM,MAAO,iBAClC,QAAO,UAAY,SAAa,oBAAqB,WAE/D,OAAS,AAAG,YAAQ,WAAW,gBAG/B,eAAoB,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,YAAa,cAAgB,SAAS,cAAc,UACtI,WAAW,MAAQ,YACnB,WAAW,OAAS,aACpB,YAAgB,WAAW,WAAW,MACtC,QAAQ,UAAU,UAAW,EAAG,GAChC,UAAa,QAAQ,aAAa,EAAG,EAAG,YAAa,cACrD,OAAS,AAAG,YAAQ,WAAW,OAEjC,WAAe,OAAO,UACtB,OAAS,OAAO,WAAW,GAC3B,OAAO,UACP,OAAO,UAET,MAAO,CAAE,OAAQ,OAAQ,QAAO,OAAO,OAAS,UAAY,MAG9D,QAAQ,QAAU,WC1GX,gBAAgB,KACrB,OAAW,GAAI,SACJ,GAAG,GAAG,WAAW,WAAW,SAAS,EAAG,QAAQ,GAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,GAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,GAAG,kBAAkB,WAAW,SAAS,EAAG,OAErM,AAAI,KAAK,QAAQ,IAAI,GAAI,SAAU,GAAG,KCJxC,IAAA,IAAoB,+BCDpB,GAAoB,sCAEE,CACpB,KAAM,UACN,SAAU,GACV,OAAQ,KACR,MAAO,KACP,OAAQ,KACR,UAAW,CACT,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,GAC9B,eAAgB,KAIb,oBACL,GAAI,CAAC,AAAG,eAAY,OAAO,OACzB,OAAO,OAAU,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,OAAO,MAAO,OAAO,QAAU,SAAS,cAAc,UACrI,OAAW,OAAO,OAAO,WAAW,SAAU,OAAO,WACrD,AAAG,mBAAgB,EAAG,IACtB,QAAY,GAAO,iBAAa,IAChC,AAAG,mBAAgB,OAAO,KAAM,IAAM,GAAO,qBAAiB,KAAM,OAAO,UAC3E,YAAgB,AAAG,wBAAqB,SACxC,QAAQ,QAAQ,eACd,oBAAwB,IAAK,aAAc,YAAa,OAAO,MAC/D,AAAG,kBAAe,mBAEpB,AAAG,OAAI,IAAI,gBAAiB,GAC5B,AAAG,OAAI,IAAI,yBAA0B,GAAG,aAAa,GAAG,mBACxD,AAAG,OAAI,IAAI,2BAA4B,IACvC,AAAG,OAAI,IAAI,2BAA4B,KDhC3C,IAAA,SAA0B,mCACL,iCACG,qCACC,wCACE,wCACF,8BEQzB,IAAoB,+BAhBpB,AAkBA,yBACE,MAAO,CACL,KAAK,IAAI,IAAI,SAAS,GAAK,IAAI,WAAW,IAC1C,KAAK,IAAI,IAAI,SAAS,GAAK,IAAI,WAAW,KAG9C,2BACE,MAAO,CACL,IAAI,WAAW,GAAM,KAAI,SAAS,GAAK,IAAI,WAAW,IAAM,EAC5D,IAAI,WAAW,GAAM,KAAI,SAAS,GAAK,IAAI,WAAW,IAAM,GAGhE,uDACE,MAAU,OAAM,MAAM,KACZ,OAAM,MAAM,SACR,CAAC,CACb,IAAI,WAAW,GAAK,EACpB,IAAI,WAAW,GAAK,EACpB,IAAI,SAAS,GAAK,EAClB,IAAI,SAAS,GAAK,IAEpB,MAAO,AAAG,WAAM,cAAc,OAAO,MAAO,CAAC,GAAI,UAEnD,yCACE,eAAmB,CAAC,IAAI,WAAW,GAAK,OAAO,GAAI,IAAI,WAAW,GAAK,OAAO,aAC7D,CAAC,IAAI,SAAS,GAAK,OAAO,GAAI,IAAI,SAAS,GAAK,OAAO,kBAClD,IAAI,cAAc,IAAI,QAC1C,gBAAoB,CAAC,MAAM,GAAK,OAAO,GAAI,MAAM,GAAK,OAAO,IAC7D,MAAO,eAET,MAAO,CAAE,WAAY,SAAU,cAAe,WAAY,IAAI,YAEhE,+BAAkC,KAChC,WAAe,aAAa,UACf,WAAW,iBACJ,CAAC,OAAS,KAAK,GAAK,EAAG,OAAS,KAAK,GAAK,cAC3C,CAAC,OAAO,GAAK,YAAY,GAAI,OAAO,GAAK,YAAY,aACvD,CAAC,OAAO,GAAK,YAAY,GAAI,OAAO,GAAK,YAAY,IACtE,MAAO,CAAE,WAAY,SAAU,cAAe,IAAI,eAEpD,0BACE,YAAgB,aAAa,UAChB,WAAW,aACR,KAAK,IAAI,GAAG,eACX,QAAU,aACR,CAAC,QAAQ,GAAK,SAAU,QAAQ,GAAK,mBACvC,CAAC,QAAQ,GAAK,SAAU,QAAQ,GAAK,UACtD,MAAO,CAAE,WAAY,SAAU,cAAe,IAAI,eCjEpD,AAgBA,0BAA0B,OACxB,MAAO,OAAQ,EAAI,KAAK,GAAK,KAAK,MAAO,OAAQ,KAAK,IAAO,GAAI,KAAK,KAExE,wCACE,YAAgB,KAAK,GAAK,EAAI,KAAK,MAAM,CAAE,QAAO,GAAK,OAAO,IAAK,OAAO,GAAK,OAAO,IACtF,MAAO,kBAAiB,SAE1B,2BAA+B,OAAU,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IACvE,oBACE,YAAc,EACd,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,SAAW,GAAG,GAAK,GAAG,GAExB,MAAO,SAET,6CACE,WAAe,GACf,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,OAAO,KAAK,IAAI,GAAG,cAErB,MAAO,QAET,8CACE,YAAgB,QACH,KAAK,OAClB,YAAe,EAAG,IAAM,KAAM,OAC5B,QAAQ,KAAK,IACb,YAAe,EAAG,IAAM,KAAM,MAC5B,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAM,mBAAmB,KAAM,OAG9D,MAAO,SAET,8CACE,SAAa,KAAK,IAAI,eACT,KAAK,IAAI,yBACC,CAAC,CAAC,KAAM,CAAC,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,EAAG,EAAG,sBACxC,uBAAuB,OAAO,GAAI,OAAO,6BAClC,0BAA0B,kBAAmB,0CAC5C,uBAAuB,CAAC,OAAO,GAAI,CAAC,OAAO,IAC7E,MAAO,2BAA0B,yBAA0B,2BAE7D,uCACE,sBAA0B,CAAC,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,IAAK,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,0BACrD,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,wBAC1B,CAC1B,CAAC,IAAI,kBAAkB,GAAI,sBAC3B,CAAC,IAAI,kBAAkB,GAAI,uBAE7B,MAAO,CACL,kBAAkB,GAAG,OAAO,oBAAoB,IAChD,kBAAkB,GAAG,OAAO,oBAAoB,IAChD,CAAC,EAAG,EAAG,IAGX,2DACE,MAAO,CACL,IAAI,sBAAuB,eAAe,IAC1C,IAAI,sBAAuB,eAAe,KHjE9C,IAAA,SAA0B,uCACD,qCACF,oCACE,8BIZzB,wEAGA,IAAO,eAAQ,CACb,QAAS,QACT,SAAU,aAEV,MAAO,GAIP,QAAS,GAIT,WAAY,GAKZ,OAAQ,GAIR,eAAgB,GAIhB,OAAQ,OAGR,OAAQ,CACN,QAAS,GACT,MAAO,EACP,OAAQ,EAIR,OAAQ,GACR,WAAY,EACZ,SAAU,EACV,UAAW,EACX,KAAM,EACN,WAAY,EACZ,IAAK,EACL,SAAU,GACV,MAAO,GACP,QAAS,GACT,WAAY,GACZ,YAAa,GACb,SAAU,GACV,SAAU,GAGZ,QAAS,CACP,QAAS,IAGX,KAAM,CACJ,QAAS,GAIT,SAAU,CACR,UAAW,gCAIX,UAAW,IACX,SAAU,GAEV,SAAU,GAEV,WAAY,GAKZ,cAAe,GACf,aAAc,GAEd,eAAgB,IAKlB,KAAM,CACJ,QAAS,GACT,UAAW,0BACX,UAAW,IACX,cAAe,IAGjB,KAAM,CACJ,QAAS,GACT,UAAW,sBACX,UAAW,IAGb,IAAK,CACH,QAAS,GACT,UAAW,iCAEX,UAAW,GACX,WAAY,IAId,OAAQ,CACN,QAAS,GACT,cAAe,GACf,UAAW,oCACX,UAAW,GACX,WAAY,IAId,QAAS,CACP,QAAS,GACT,UAAW,GACX,cAAe,GACf,WAAY,GACZ,UAAW,gCAGb,UAAW,CACT,QAAS,GACT,UAAW,IACX,UAAW,iCAIf,KAAM,CACJ,QAAS,GACT,UAAW,yBACX,UAAW,IACX,cAAe,GAEf,eAAgB,GAEhB,UAAW,GACX,aAAc,GAEd,UAAW,aAGb,KAAM,CACJ,QAAS,GACT,SAAU,GAEV,UAAW,IACX,WAAY,GAKZ,cAAe,GACf,aAAc,GAEd,eAAgB,GAEhB,SAAU,EAEV,UAAW,GACX,SAAU,CACR,UAAW,6BAEb,SAAU,CACR,UAAW,iCCvKJ,KAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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", "names": [] } diff --git a/dist/human.esm.js b/dist/human.esm.js index 010f6095..8109d80a 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -5,50 +5,50 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos2=Math.cos(rotation),sin2=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos2*(1-lumR)+sin2*-lumR,lumG+cos2*-lumG+sin2*-lumG,lumB+cos2*-lumB+sin2*(1-lumB),0,0,lumR+cos2*-lumR+sin2*.143,lumG+cos2*(1-lumG)+sin2*.14,lumB+cos2*-lumB+sin2*-.283,0,0,lumR+cos2*-lumR+sin2*-(1-lumR),lumG+cos2*-lumG+sin2*lumG,lumB+cos2*(1-lumB)+sin2*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xAbs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version21,version_converter:()=>version17,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version13,version_wasm:()=>version11,version_webgl:()=>version9,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all5)=>{__markAsModule2(target);for(var name in all5)__defProp2(target,name,{get:all5[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer11=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer12){GROWABLE_HEAP_I8().set(array2,buffer12)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer11=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer11=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer11.byteLength,updateGlobalBufferAndViews(buffer11),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data2){worker.onmessage({data:data2})}),worker.on("error",function(data2){worker.onerror(data2)}),worker.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack9=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer12){HEAP8.set(array2,buffer12)}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool6,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min8,max10){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean7,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse12){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real8,imag8){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min8,x,max10){return Math.max(min8,Math.min(x,max10))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add33(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` +`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xAbs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version18,version_converter:()=>version14,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version10,version_wasm:()=>version9,version_webgl:()=>version8,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all4)=>{__markAsModule2(target);for(var name in all4)__defProp2(target,name,{get:all4[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer10=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer11){GROWABLE_HEAP_I8().set(array2,buffer11)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer10=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer10=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer10.byteLength,updateGlobalBufferAndViews(buffer10),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data2){worker.onmessage({data:data2})}),worker.on("error",function(data2){worker.onerror(data2)}),worker.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer11){HEAP8.set(array2,buffer11)}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool5,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min7,max9){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean6,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse11){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real7,imag7){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min7,x,max9){return Math.max(min7,Math.min(x,max9))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum28=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` `)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor168,tensorList){return tensorList.some(x=>x.id===tensor168.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor168.kept&&tensor168.scopeId===oldScope.id&&this.track(tensor168)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor168 of node.saved)tensor168.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real8,imag8){let $real=convertToTensor(real8,"real","complex"),$imag=convertToTensor(imag8,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor168=>tensor168.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer11){if(useNodeBuffer)return Buffer.from(buffer11).toString("base64");let buf=new Uint8Array(buffer11),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer11.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer11=>{temp.set(new Uint8Array(buffer11),offset),offset+=buffer11.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer11=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer11);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer11)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor168,indices){if(tensor168.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor168.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor168.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor168.rank}`);if(tensor168.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor168.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. +`;return lines[lines.length-1]=" "+lines[lines.length-1]+"]"+(isLast?"":newLineSep),lines}function createComplexTuples(vals){let complexTuples=[];for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor167,tensorList){return tensorList.some(x=>x.id===tensor167.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor167.kept&&tensor167.scopeId===oldScope.id&&this.track(tensor167)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor167 of node.saved)tensor167.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real7,imag7){let $real=convertToTensor(real7,"real","complex"),$imag=convertToTensor(imag7,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor167=>tensor167.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer10){if(useNodeBuffer)return Buffer.from(buffer10).toString("base64");let buf=new Uint8Array(buffer10),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer10.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer10=>{temp.set(new Uint8Array(buffer10),offset),offset+=buffer10.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer10=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer10);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer10)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor167,indices){if(tensor167.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor167.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor167.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor167.rank}`);if(tensor167.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor167.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. Actual: ${actualFlat}. Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp13=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp13,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor168=>tensor168.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad11,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad11,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad11,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad11==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad11=="object"){let top=dataFormat==="channelsLast"?pad11[1][0]:pad11[2][0],bottom=dataFormat==="channelsLast"?pad11[1][1]:pad11[2][1],left=dataFormat==="channelsLast"?pad11[2][0]:pad11[3][0],right=dataFormat==="channelsLast"?pad11[2][1]:pad11[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,front:pad11,back:pad11,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad11,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad11==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor168=>{if(tensor168.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor168.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean7,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad11,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad11,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad11,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad11,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad11,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad11),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad11){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad11);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad11,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad11){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad11)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse12=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse12);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse12};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${expectedFlat}.`)}}function expectPromiseToFail(fn,done){fn().then(()=>done.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp12=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp12,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor167=>tensor167.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad10,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad10,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad10,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad10==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad10=="object"){let top=dataFormat==="channelsLast"?pad10[1][0]:pad10[2][0],bottom=dataFormat==="channelsLast"?pad10[1][1]:pad10[2][1],left=dataFormat==="channelsLast"?pad10[2][0]:pad10[3][0],right=dataFormat==="channelsLast"?pad10[2][1]:pad10[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,front:pad10,back:pad10,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad10,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad10==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor167=>{if(tensor167.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${tensor167.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod4=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod4===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod4}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean6,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad10,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad10,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad10,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad10,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad10,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad10),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad10){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad10);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad10,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad10){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad10)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse11=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse11);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse11};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputHeight} and ${blockSize} for depthToSpace with input shape ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad11,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros10=zerosLike(divResult),bEqualsZero=equal($b,zeros10);return where(bEqualsZero,zeros10,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable3=>!variable3.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable3=>variable3.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad11,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad11,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real8=zeros(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real8=ones2(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad11,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad11===0&&(pad11="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad11),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad11==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad11:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp13){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp13,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul64=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul64,resultY=this.mean+this.stdDev*v2*mul64,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min8,this.range=max10-min8,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min8} - ${max10} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step9)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad11,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad11,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean7=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean7,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step9!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step9,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad11,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad11,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad11,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log6,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod5,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod5),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split5,tile:()=>tile4,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split5(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile4(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad11){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad11);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad11},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad11)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad11,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad11,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad11,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad11,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad11,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad11,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad11){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad11);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad11,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad11),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad11)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse12}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse12);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad11,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad11,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean7,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean7.shape,x.shape),tileShape=[];if(mean7.rank===1){for(let i=0;imean7.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean7.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean7.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean7.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean7.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean7.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean7.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean7.shape)},derOffset=()=>{let offsetDer=dy;return mean7.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean7.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad11,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad11,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad11)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp13=b,outShape=assertAndGetBroadcastShape(base2.shape,exp13.shape),derBase=()=>{let expFloat=cast(exp13,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp13.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp13.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean7,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean7,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min8,max10){return this.throwIfDisposed(),clipByValue(this,min8,max10)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad11,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad11,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad11,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse12){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse12)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad11,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad11,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp13){return this.throwIfDisposed(),powStrict(this,exp13)};Tensor.prototype.pow=function(exp13){return this.throwIfDisposed(),pow(this,exp13)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad10,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros9=zerosLike(divResult),bEqualsZero=equal($b,zeros9);return where(bEqualsZero,zeros9,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad10,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad10,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real7=zeros(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real7=ones2(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad10,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad10===0&&(pad10="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad10),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad10==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad10:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp12){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp12,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul63=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul63,resultY=this.mean+this.stdDev*v2*mul63,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min7,this.range=max9-min7,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min7} - ${max9} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step8)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad10,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad10,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean6=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean6,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step8!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step8,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad10,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad10,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad10,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log5,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod4,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod4),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod4,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod4):reshapedPermuted.push(inputShape[0]*prod4);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split4,tile:()=>tile3,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split4(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile3(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad10){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad10);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad10},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad10)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad10,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad10,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad10,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad10,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad10,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad10,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad10){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad10);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad10,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad10),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad10)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse11}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse11);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad10,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad10,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean6,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean6.shape,x.shape),tileShape=[];if(mean6.rank===1){for(let i=0;imean6.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean6.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean6.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean6.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean6.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean6.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean6.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean6.shape)},derOffset=()=>{let offsetDer=dy;return mean6.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean6.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax5=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax5))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad10,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad10,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad10)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp12=b,outShape=assertAndGetBroadcastShape(base2.shape,exp12.shape),derBase=()=>{let expFloat=cast(exp12,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp12.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp12.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean6,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean6,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min7,max9){return this.throwIfDisposed(),clipByValue(this,min7,max9)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad10,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad10,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad10,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse11){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse11)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad10,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad10,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp12){return this.throwIfDisposed(),powStrict(this,exp12)};Tensor.prototype.pow=function(exp12){return this.throwIfDisposed(),pow(this,exp12)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split8=kernel_impls_exports.split,tile7=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer11=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer11.set(xBuf.get(...inLoc),...outLoc)}return buffer11.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax10&&(max10=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse12){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse12?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile8(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum29=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum29+=z*z}return sum29}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real8=complexVals.complexTensorInfos.real,imag8=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real8.dataId).values,imagVals=cpuBackend.data.get(imag8.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex9(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,realVals=backend3.data.get(real8.dataId).values,imagVals=backend3.data.get(imag8.dataId).values,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.data.get(complexInfo.dataId);return complex11.complexTensorInfos={real:backend3.makeTensorInfo(real8.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag8.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex9};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real8=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real8.dataId).values;return backend3.makeTensorInfo(real8.shape,real8.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real6};function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast48};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast48({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast48({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex9({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add31=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add31};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil4=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil4},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp12=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp12},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm14=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm14},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor6=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor6},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log9=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log9};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax10&&(max10=value)}vals[i]=max10}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt5=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt5};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice19(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice19},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub34=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub34};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu6=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu6},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu6},relu9=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu9},relu66=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu66};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu9({inputs:{x},backend:backend3});if(activation2==="elu")return elu6({inputs:{x},backend:backend3});if(activation2==="relu6")return relu66({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu6({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape87(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real8=xData.complexTensorInfos.real,imag8=xData.complexTensorInfos.imag;real8.shape=$shape,imag8.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape87};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape87({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape87({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos4},acosh4=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh4},asin4=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin4},asinh4=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh4},atan5=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan5},atanh4=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh4};function pool5(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean7,variance}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean7,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean7.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concat17({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat17({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape87({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat17};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos6},cosh5=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh5};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div35=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div35},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf4=unaryKernelFunc(Erf,xi=>{let sign5=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign5*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf4};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p5=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p5},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool5(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad11),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal4=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal4},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round4},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu5=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu5},sigmoid7=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid7},sign4=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign4},sin5=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin5},sinh5=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh5},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus5=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt13},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step8},tan4=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan4},tanh6=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh6};function unique5(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique5},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad11=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad11)+line),maxLineLength=0;for(let i=0;i0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer10=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer10.set(xBuf.get(...inLoc),...outLoc)}return buffer10.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax9&&(max9=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse11){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse11?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile7(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum28=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum28+=z*z}return sum28}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split8(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real7=complexVals.complexTensorInfos.real,imag7=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real7.dataId).values,imagVals=cpuBackend.data.get(imag7.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex8(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,realVals=backend3.data.get(real7.dataId).values,imagVals=backend3.data.get(imag7.dataId).values,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.data.get(complexInfo.dataId);return complex10.complexTensorInfos={real:backend3.makeTensorInfo(real7.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag7.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex8};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real5(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real7=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real7.dataId).values;return backend3.makeTensorInfo(real7.shape,real7.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real5};function cast47(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast47({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex8({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real5({inputs:{input:x},backend:backend3}),result=cast47({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast47};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast47({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast47({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex8({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add30=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add30};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil3=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil3},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp11=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp11},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm13=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm13},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor5=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor5},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log8=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log8};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax9&&(max9=value)}vals[i]=max9}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt4=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt4};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice18(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice18},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub33=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub33};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu5=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu5},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu5(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu5},relu8=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu8},relu65=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu65};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu8({inputs:{x},backend:backend3});if(activation2==="elu")return elu5({inputs:{x},backend:backend3});if(activation2==="relu6")return relu65({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu5({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape86(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real7=xData.complexTensorInfos.real,imag7=xData.complexTensorInfos.imag;real7.shape=$shape,imag7.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape86};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape86({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape86({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos3},acosh3=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh3},asin3=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin3},asinh3=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh3},atan4=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan4},atanh3=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh3};function pool4(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean6,variance}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean6,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean6.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real5({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag5({inputs:{input:t},backend:backend3})),realConcated=concat16({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat16({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex8({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape86({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat16};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos5},cosh4=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh4};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div34=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div34},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf3=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf3};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p4=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p4},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool4(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad10),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal3=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal3},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu4=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu4},sigmoid6=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid6},sign3=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign3},sin4=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin4},sinh4=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh4},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus4=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt12},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step7},tan3=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan3},tanh5=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh5};function unique4(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique4},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` +`),pad10=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad10)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function createStaticIndexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max10=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max10+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer11,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`float v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` +`))}function createProgram(gl){return throwIfNull(gl,()=>gl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function createStaticIndexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max9=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max9+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer10,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - float result = ${operation211}; + float result = ${operation210}; setOutput(result); } - `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`vec4 v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` + `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - vec4 result = ${operation211}; + vec4 result = ${operation210}; setOutput(result); } `}},ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` @@ -71,7 +71,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } setOutput(float(bestIndex)); } - `}};function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i 0.0 || val < 0.0) ? false : val != 0.0; } @@ -91,7 +91,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version22="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(version19="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -116,7 +116,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version22,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:version19,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` int getFlatIndex(ivec3 coords) { return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; } @@ -1041,7 +1041,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1055,7 +1055,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1825,7 +1825,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(newValue); } } - `}},CumSumProgram=class{constructor(shape,exclusive,reverse12){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse12?`end != ${length-1}`:"end != 0",idxString=reverse12?"end + 1":"end - 1"):(condition=reverse12?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse12?"end + pow2":"end - pow2"),this.userCode=` + `}},CumSumProgram=class{constructor(shape,exclusive,reverse11){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse11?`end != ${length-1}`:"end != 0",idxString=reverse11?"end + 1":"end - 1"):(condition=reverse11?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse11?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${getCoordsDataType(rank)} coords = getOutputCoords(); @@ -2026,7 +2026,7 @@ return (round(mod(b, 2.0)) != 1) ? void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer11=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer11}function downloadFloat32MatrixFromBuffer(gl,buffer11,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer11,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer11,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer11,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer11,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer11,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` + }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer10=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer10}function downloadFloat32MatrixFromBuffer(gl,buffer10,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer10,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer10,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer10,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer10,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer10,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` blockIndex = rc.y + ${col}; pos = rc.x + ${row}; @@ -3551,7 +3551,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getChannel(packedInput, ${coords2})); } - `}},{segment_util:segment_util2}=backend_util_exports,split10=kernel_impls_exports.split,tile9=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice21,shape,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice21,dtype,complexTensorInfos,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer11=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer11=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer11==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer11,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice21}=this.texData.get(dataId),key=slice21&&slice21.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile9(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse12){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse12),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse12),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min8,max10){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min8,max10);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split10(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex10(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real8},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag8},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex11.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex10},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` + `}},{segment_util:segment_util2}=backend_util_exports,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice20,shape,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice20,dtype,complexTensorInfos,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer10=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer10=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer10==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer10,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice20}=this.texData.get(dataId),key=slice20&&slice20.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile8(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse11){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse11),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse11),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min7,max9){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min7,max9);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex9(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real7},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag7},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex10.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex9},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` if (isnan(a)) return a; if (isnan(b)) return b; `,CHECK_NAN_SNIPPET_BINARY_PACKED=` @@ -3559,14 +3559,14 @@ return (round(mod(b, 2.0)) != 1) ? result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real8,imag8]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex10({inputs:{real:real8,imag:imag8},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real8),webglBackend.disposeIntermediateTensorInfo(imag8),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real7,imag7]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex9({inputs:{real:real7,imag:imag7},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real7),webglBackend.disposeIntermediateTensorInfo(imag7),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` return atan(a, b); `,ATAN2_PACKED=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+CHECK_NAN_SNIPPET_BINARY_PACKED+` return result; -`,atan25=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan25};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` +`,atan24=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan24};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -3589,7 +3589,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput((x - mean) * inv + offset); } - `}},batchNorm3=({inputs,backend:backend3,attrs})=>{let{x,mean:mean7,variance,offset,scale:scale2}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean7,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real7},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast49(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast49({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex10({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real7({inputs:{input:x},backend:backend3}),result=cast49({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast49},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i{let{x,mean:mean6,variance,offset,scale:scale2}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean6,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real6},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast48},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;iidx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag7};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape89(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape89};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real7({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag7({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex10({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape89({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape89({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat18(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat18},COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel),res=channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag6};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape88(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape88};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape88({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape88({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat17(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat17},COS=CHECK_NAN_SNIPPET_UNARY+` return cos(x); -`,cos7=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos7},DIV=` +`,cos6=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos6},DIV=` if (a == b) { return 1.0; }; @@ -3659,7 +3659,7 @@ return a / b;`,DIV_PACKED=` } return result; -`,div36=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div36},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` +`,div35=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div35},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` const float exponentMultiplier = ${exponentMultiplierSnippet}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -3692,7 +3692,7 @@ return a / b;`,DIV_PACKED=` ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape89({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape89({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft7},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape88({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape88({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft6},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -3762,7 +3762,7 @@ return a / b;`,DIV_PACKED=` ${glsl.output} = result; } - `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft7},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` + `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft6},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` if (inIdx < 0 || inIdx >= ${inSize}) { return 0.0; } @@ -3815,7 +3815,7 @@ return a / b;`,DIV_PACKED=` } setOutput(sumValue); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend3){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape89({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape89({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` + `}};function transposeImpl2(x,perm,backend3){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TransposePackedProgram(x.shape,perm):new TransposeProgram(x.shape,perm);return backend3.runWebGLProgram(program,[x],x.dtype)}var maxConfig2={kernelName:Max,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape88({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape88({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` int start = ${start}; int end = ${end}; @@ -3935,7 +3935,7 @@ return a / b;`,DIV_PACKED=` float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` + `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` vec3 fill = vec3(${fillValue.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { @@ -3954,19 +3954,19 @@ return a / b;`,DIV_PACKED=` } `}},rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend3,program=new RotateProgram(image3.shape,radians,fillValue,center),output=webglBackend.runWebGLProgram(program,[image3],image3.dtype);return output}},SIN=CHECK_NAN_SNIPPET_UNARY+` return sin(x); -`,sin6=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin6},SQUARE="return x * x;",square24=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square24},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan5=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan5},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape90},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape90({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape90({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast50(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast50},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat19(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse12?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum6},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean7,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean7.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max8(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max8},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min6},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad10(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad10,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu7(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu7},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast50({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse11(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape90({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse11,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice20(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d3(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d3(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d3(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d3(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice20},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax4(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax4};function split11(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice20({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split11},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape90({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice20({inputs:{x},attrs:{begin,size},backend:backend3});return reshape90({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape90({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum28},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer11=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer11,memoryOffset,size);case"int32":return new Int32Array(buffer11,memoryOffset,size);case"bool":return new Uint8Array(buffer11,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer11,dtype){switch(dtype){case"float32":return new Float32Array(buffer11);case"int32":return new Int32Array(buffer11);case"bool":return new Uint8Array(buffer11);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version11="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: +`,sin5=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin5},SQUARE="return x * x;",square23=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square23},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan4=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan4},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape89},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape89({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape89({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast49(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast49},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat18(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse11?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum5},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill5(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill5},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean6,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean6.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max7(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max7},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min5},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu6},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast49({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape89({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse10,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid7(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid7},sinConfig3=createUnaryKernelConfig(Sin);function slice19(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d2(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice19},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax3(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax3};function split10(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice19({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split10},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape89({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice19({inputs:{x},attrs:{begin,size},backend:backend3});return reshape89({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape89({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum27(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum27},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer10=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer10,memoryOffset,size);case"int32":return new Int32Array(buffer10,memoryOffset,size);case"bool":return new Uint8Array(buffer10,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer10,dtype){switch(dtype){case"float32":return new Float32Array(buffer10);case"int32":return new Int32Array(buffer10);case"bool":return new Uint8Array(buffer10);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config2=identifier;if(config2.className==null||config2.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config2)}. 'className' and 'config' must set.`);let className=config2.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique7(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones8,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros9});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile11(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile11(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean7=0,stddev=1,dtype,seed){return randomNormal(shape,mean7,stddev,dtype,seed)}function dot5(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather7(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square25(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu7(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros9(){return new Zeros}function ones8(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add32,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d5,conv2d:()=>conv2d11,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d3,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot6,dropout:()=>dropout3,elu:()=>elu8,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum9,minimum:()=>minimum7,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu8,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape91,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax5,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable3=variableAndValue[0];variable3.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor168,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex),layer.inboundNodes.length===0)return[tensor168];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square25(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square25(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square25(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square25(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg20=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg20,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast51(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast51(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack9=[],marks=[];for(stack9.push(fetch3);stack9.length>0;){let top=stack9[stack9.length-1];if(visited.has(top.name)){stack9.pop();continue}let topIsMarked=marks[marks.length-1]===stack9.length-1;if(top.inputs.length===0||topIsMarked)stack9.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack9.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack9.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique7(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor168,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex,tensorIndex=tensor168.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor168.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version13}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather7(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range4(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor168=tensors[name];oldTensorIds.indexOf(tensor168.id)===-1&&tensorsToDispose.push(tensor168)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique7(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique7(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor168,i)=>{tensor168==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range4(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version13}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer11,specs){let name2Tensor=io_exports.decodeWeights(buffer11,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu7(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square25(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range4(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range4(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile11(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile11(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot5(mul(inputs,dpMask),this.kernel.read()):h=dot5(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot5(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones9(),rate),createMask=()=>inTrainPhase(droppedInputs,ones9,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot5(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot5(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range4(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast51(input2,"int32"));let output=gather7(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique7(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max9(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range4(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range4(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast51(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean7,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean7,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean7,variance,beta,gamma,epsilon3);return[normed,mean7,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range4(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean7.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean7,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range4(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range4(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range4(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean7,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable3,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable3.read(),updateDelta=origValue.sub(value).mul(decay);variable3.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean7,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique7(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean7,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor168 of additionalInputs)if(tensor168 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu8(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu8(args){return new PReLU(args)}function softmax5(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d5(args){return new Conv1D(args)}function conv2d11(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d3(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape91(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add32(args){return new Add10(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum9(args){return new Maximum3(args)}function minimum7(args){return new Minimum3(args)}function multiply3(args){return new Multiply7(args)}function dot6(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less7(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less7:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less7,this.monitorFunc===less7&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less7?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor168=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor168.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor168.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor168=resourceManager.getHashTableHandleByName(nodeName);if(tensor168!=null)return tensor168}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad11=getParamValue("pad",node,tensorMap,context);if(pad11==="explicit"){pad11=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad11[i*2],explicitPadding[i][1]=pad11[i*2+1];return explicitPadding}return pad11}function cloneTensor(tensor168){return tensor168.kept?tensor168:clone(tensor168)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor168.tensor.id))&&tensor168.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor168){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor168.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor168.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor168,keep(tensor168),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor168,0))}split(length,tensor168){if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor168.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to +2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique6(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros8});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod4=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile10(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile10(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean6=0,stddev=1,dtype,seed){return randomNormal(shape,mean6,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square24(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu6(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros8(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add31,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d10,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu7,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum8,minimum:()=>minimum6,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu7,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape90,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax4,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor167,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex),layer.inboundNodes.length===0)return[tensor167];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log9=mul(div(1,this.seen),this.totals[key]);logs5[key]=log9,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square24(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square24(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square24(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square24(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg19=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg19,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast50(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast50(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique6(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor167,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex,tensorIndex=tensor167.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor167.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version10}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor167=tensors[name];oldTensorIds.indexOf(tensor167.id)===-1&&tensorsToDispose.push(tensor167)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique6(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique6(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor167,i)=>{tensor167==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version10}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer10,specs){let name2Tensor=io_exports.decodeWeights(buffer10,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu6(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square24(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step8=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step8,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile10(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile10(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast50(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique6(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max8(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast50(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean6,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean6,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean6,variance,beta,gamma,epsilon3);return[normed,mean6,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean6.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean6,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean6,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean6,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique6(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean6,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step8=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step8,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor167 of additionalInputs)if(tensor167 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu7(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu7(args){return new PReLU(args)}function softmax4(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d10(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape90(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add31(args){return new Add9(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum8(args){return new Maximum3(args)}function minimum6(args){return new Minimum3(args)}function multiply3(args){return new Multiply6(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater10:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater10:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor167=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor167.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor167.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor167=resourceManager.getHashTableHandleByName(nodeName);if(tensor167!=null)return tensor167}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor167){return tensor167.kept?tensor167:clone(tensor167)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor167.tensor.id))&&tensor167.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor167){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, + because the value dtype is ${tensor167.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor167.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor167,keep(tensor167),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor167,0))}split(length,tensor167){if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor167.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=[];tidy(()=>{tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor168.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor168.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor168=>{(keepIds==null||!keepIds.has(tensor168.id))&&tensor168.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor168=>reshape(tensor168,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor168=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor168.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor168,elementShape)}pushBack(tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor168.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor168),this.tensors.push(tensor168)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168),this.tensors[elementIndex]=tensor168}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor168,elementShape,elementDtype){let dtype=tensor168.dtype;if(tensor168.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor168.shape}`);if(tensor168.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${elementDtype}`);let outputShape=tensor168.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor168);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor168,indices,elementShape,numElements){if(indices.length!==tensor168.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor168.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor168.dtype,numElements),tensors=unstack(tensor168,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split12(tensor168,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=[];tidy(()=>{tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor167.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor167.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor167=>{(keepIds==null||!keepIds.has(tensor167.id))&&tensor167.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor167=>reshape(tensor167,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor167=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor167.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor167,elementShape)}pushBack(tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor167.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor167),this.tensors.push(tensor167)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167),this.tensors[elementIndex]=tensor167}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor167,elementShape,elementDtype){let dtype=tensor167.dtype;if(tensor167.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor167.shape}`);if(tensor167.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${elementDtype}`);let outputShape=tensor167.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor167);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor167,indices,elementShape,numElements){if(indices.length!==tensor167.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor167.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor167.dtype,numElements),tensors=unstack(tensor167,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split11(tensor167,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor168=>tensor168.id),condValue=await condResult[0].data();condResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor168=>tensor168.id);origResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor168=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor168,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split12(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad11,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad11)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad11,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad11,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step9=getParamValue("step",node,tensorMap,context);return[range(start,stop,step9,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean7=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean7,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse12=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse12)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor168,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor168=>{let sameShape=util_exports.arraysEqual(tensor168.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor168).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor168:reshape(tensor168,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor168=getParamValue("tensor",node,tensorMap,context);return unstack(tensor168,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return split(tensor168,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor168=>tensor168.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor168=>tensor168.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor168=>{tensor168!=null&&(intermediateTensorConsumerCount[tensor168.id]=(intermediateTensorConsumerCount[tensor168.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor168=>{if(tensor168&&!tensorsToKeep.has(tensor168.id)){let count2=intermediateTensorConsumerCount[tensor168.id];count2===1?(tensor168.dispose(),delete intermediateTensorConsumerCount[tensor168.id]):count2!=null&&intermediateTensorConsumerCount[tensor168.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor168=>{tensor168&&!tensor168.isDisposed&&!keepIds.has(tensor168.id)&&tensor168.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor168,index)=>(map[this.inputs[index].name]=tensor168,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack9=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack9.length>0;){let promises=this.processStack(inputNodes,stack9,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack9,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack9.length>0;){let item=stack9.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack9,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor168=>tensor168.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor168=this._signature.inputs[inputName];result[tensor168.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor168=this._signature.outputs[name];return tensor168.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version17="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version19,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max10){return Math.floor(this.random()*max10)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor167=>tensor167.id),condValue=await condResult[0].data();condResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor167=>tensor167.id);origResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor167=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor167,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split11(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad10,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad10)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad10,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad10,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step8=getParamValue("step",node,tensorMap,context);return[range(start,stop,step8,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean6=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean6,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse11=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse11)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor167,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor167=>{let sameShape=util_exports.arraysEqual(tensor167.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor167).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor167:reshape(tensor167,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor167=getParamValue("tensor",node,tensorMap,context);return unstack(tensor167,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return split(tensor167,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor167=>tensor167.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor167=>tensor167.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor167=>{tensor167!=null&&(intermediateTensorConsumerCount[tensor167.id]=(intermediateTensorConsumerCount[tensor167.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor167=>{if(tensor167&&!tensorsToKeep.has(tensor167.id)){let count2=intermediateTensorConsumerCount[tensor167.id];count2===1?(tensor167.dispose(),delete intermediateTensorConsumerCount[tensor167.id]):count2!=null&&intermediateTensorConsumerCount[tensor167.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor167=>{tensor167&&!tensor167.isDisposed&&!keepIds.has(tensor167.id)&&tensor167.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor167,index)=>(map[this.inputs[index].name]=tensor167,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack8=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack8.length>0;){let promises=this.processStack(inputNodes,stack8,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack8,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack8.length>0;){let item=stack8.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack8,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor167=>tensor167.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor167=this._signature.inputs[inputName];result[tensor167.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor167=this._signature.outputs[name];return tensor167.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version14="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version16,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max9){return Math.floor(this.random()*max9)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset5){let base2=this,size;return this.size===Infinity||dataset5.size===Infinity?size=Infinity:this.size!=null&&dataset5.size!=null?size=this.size+dataset5.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset5.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let base2=this,random=seedrandom4.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];if(canTensorify(exampleRow)){let value=batchConcat(rows);return{value,recurse:!1}}return{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor4(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){let inputIterator=await this.input.iterator(),utf8Iterator=inputIterator.decodeUTF8(),lineIterator=utf8Iterator.split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice21=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice21)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version19="2.7.0",version21={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version9,"tfjs-backend-wasm":version11};var config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice20=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice20)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version16="2.7.0",version18={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version8,"tfjs-backend-wasm":version9};var config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4685,7 +4685,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var version8="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tfjs_esm_exports,this.version=version8,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig){this.state="load";let timeStamp=now2();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};export{Human as default}; +2Q==`;var version11="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tfjs_esm_exports,this.version=version11,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig){this.state="load";let timeStamp=now2();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};export{Human as default}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.esm.js.map b/dist/human.esm.js.map index ca07ad53..db6f2164 100644 --- a/dist/human.esm.js.map +++ b/dist/human.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js"], - "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n"], - "mappings": "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kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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G,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CAC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BC7DgC,CAC7C,WAAY,UACZ,SAAU,mBACR,mBAAuC,OAChC,MAAQ,wBACY,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,8BCRS,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,sCCIqB,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WClC9B,wBAAwC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,mBC0FG,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,cACA,kBACA,oBACA,cACA,mBACA,iBACA,iBACA,mBACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,uBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA6B,aAC3B,iBAAiB,gBC9LnB,OAAO,UAAU,IAAM,WAC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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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", + "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js"], + "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk\nJyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX/2wBDAQwNDREPESESEiFFLicuRUVFRUVF\nRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX/wAARCASwBLADASIA\nAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAEDAgQFBgf/xABDEAEAAgECBAMECQIDBgUFAQAA\nAQIDBBEFEiExE0FRBiJhcRQjMkJSgZGhsWLBJDNyFSVTY3OSNEPR4fAHFjWCokT/xAAYAQEAAwEA\nAAAAAAAAAAAAAAAAAQIDBP/EACARAQEBAQADAQEBAQEBAAAAAAABAhEDITFBEjJRIhP/2gAMAwEA\nAhEDEQA/APqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAKNTq8OkxzfNkisQC8eb1XtRNbzXT4q7eU2nu0MntRq/D8StMccvW29ZmdvgjsTyvZjxOLj\n+s8WLxn8TFPXs6Oj9oct7c14rkxz22nrB2I49KOdTjelmszfmpMeUxv/AA28OqwZ4icWWtt/SUi4\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmdo3nsPNe0Pt\nFh09Z0+DNWL7+9O/7A3eJcZppsV5raI27esvH6jX5ddM25p79Ilo59VbUZOe2Tm/PeGvfPfT2iKR\nPLv1+DO678XmW/a97U6TtOyzTbTF538/T9WjTNecm9a7126tqk3rSYxY5ta1plRZqZNXGjyZcPXl\nmZmsx+qjBrsuO16xM7eXRt04JrdTltk5OWJnfaWf0a2lty5MdZnfzSn+WOHiOutFpjHa9e8bQ2fp\n+alYy462pk7zXbuxjPesbRS0f6ZZV1ET1tErzXFLHo+A+1ddZf6NrI8PJHa1vN6iJi0bxMTHwfOa\nzhzd61v1846utwniM6DUdb3nBaNrVmd9vjC/ZVePYirBqMWppz4rxaPgtEAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAItaK1m09ojcHnvarjM8P0vh49+a/eY8ng9D\nh1fGM1rxjtGPfvbzdbjuTJxHX48cTPNltM/KsS9Dw7S49Jp6UpHaGe2vjz1y9J7LYK13vHWe7bj2\nex1tvM80ekuxW3RnW3Vm6P5jRx8H0+OYmMcb+bapo8GKPdpC6bQwtdHU8JpWkdJ/JweL6e23iU67\nd4dubSqyVi9Zi0bwIs68XGp36TtEq7ZJmZmevzdbifCKWtbJinkt6eTgZPFw32t+sRurbWVzxs1y\nRv6T8V1NZNPtfq0seTm+Kevr+SZuxXjvaPiV8N4viycto9HseG6+uu08W6Rkj7UPmFck1tE1nlmP\nLd3eA8V8HVVi1pjq6Ma/pnqce/ERMTETHaUrKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAADW19+TQ5p/p2bLS4v04Zmt5VjeQeJ4bjnLqsupv+Ka1+ERLv4reTmcNxcuC\nvy3l0qdI2hlr66sT02ot0ZV7qqrInruzrVZLGSZ37JjqgYTG0K5lbaFVhDT1Ub456RPweY4hixWi\neSdpjvD1eWejz3FNHWYtkpvFo9EIseb3tS3SerOms22rfpPqZKzvvHSYUz70TExG6Gdbs2rljeJ/\nMx5L0vEzPaelnOi98c9J2bFNTFpit47+a+PVUvx9T9nOIfT+GV5p3yY/ds67wvsXqpxau+G09Lx+\nr3TqrEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV4ljnLw3U0jvO\nO0fs2lWqyUw6XLkyfYrWZkHldBEV09eveG3Fq1mI3jd4vPrOIaid8G9MP3Y38k6fNrt/rMk9Ou8s\ntfXXn49rGWInuy8SO/k5Gl1E3rG/fzbOe94wTy99mbRvTrMOOvNfJWsesywniukrG/jU6fF43WYN\nTmtEeJtEQ06aSmK2+bNtEd+qfSO17unF9Hmvy1y13XWyVmN4tExLxVK8PmNq5NrT58zawam+m/yc\n0Xj8NpRYSvQZ7xEOdqI3rPozxayNRXe0ct/ON03jmrKB5nV4q1yTO20Obmv4c+cx8HoeI6WZpNoj\nq83niYmYscU0r8aJ6T1n49zeJ+Meqm1drb9J+Kd5p136StGVem9l9TbHxLDFp7W7+sS+q1nesT6w\n+PcAzVjiGHftzQ+v4f8AJpv6On8jH9ZgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAABp8VrW/C9TW0ztOO3b5Nxp8VmI4bn37TWYB8f1HFtTfUfR9FWJmsdZ9I7MtJxDX5s\nd8ta1y0xzteaR2277rcuhycP12SceLxMeWNpjttHwlu8I0mfQ1y+D7k5YmJmY36T36Ka43z/AF1t\ncI1ds+qxVj7/AEej19PCw9HJ4NoK4OIU5Y35YmZdzVTGebVZabx5jJS+Tmns81rNLm1Wrzc9rVw4\nYibbem72mXTTS0w0M3BvEta1bWrM95ie5EanY87wXgNOL6XPfxraXLhra/W28bR/dzYzarBqJxRe\nbzE7Rt5vWU9n8mPHOGmS0Ypnea1naJb+k9ncNLR7u2y/WcxXO4TOoyUrN6zD0FaW5Y3hu49FiwUi\nKxCvLMR0hlW0jn6ukWw3iXjOJzbDlneOj3GaN6zDzfFOH+LE7SRGo83XNSZ2lbG2/WfdlvaT2cy6\nrNFInlrv1mfJ37cK4PwTTxOoidRm2+/2/KFuyMp47XB4LivXiunrH2b2iH2qn2K/J8x4fGDNxTSZ\n9Nh8OviRvTyfT6xtWI+DeXs9MNZubypASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAOZx6/LoOWPvWiHTcf2hiZ0e8fc2mf1E5+vP/AEeuSd7RC2uKtI6QjHfeINTfwtPf\nJvty9WPfbt/lucP03gxfJf7d/wBoReYpm97zaNeLb4Ims9Nt94auDjem1Wo5PFi1onylS+1o7l8V\nbxvtupjDMdNkYtXS1+Stt+m63xImEJ4xjHER2ZxMUjeUTO3VRmydBbjLJqPi08mbeVOXJPq1sl5Q\nVbkz9+rRy35rxHqzmZlVEe/Ez5LRlW5iyfR6zffaIjq1OSNZps2a21rZInafSPJhxGMl9LStLRWM\nlorM/A4dkrWbYfLZC2W/7K6eubX6b4RzT+W76K8b7G6X62cu3Sten59nsm3j+OXz3/0ANGIAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0OIYfpOHPijvNNo+fdvtXJO18k/\n/OwPFYbz2ls3jx8VqW6xMdWPEdP9D4lkx/dt79flLLHbkxTPwY6nt2512ORTRzE2x4/dpE7cvkme\nE4IrW3hRMxO8THRtU1FKWtvtvK2upx22rzRCtXkqzh2jtF7ZbT122b01ndnpuWuP3Z3+Ky20qDVv\nfauzVy3mejZzNK8dVjqi87KLRLYtXruqvXzkQp7Qoid88R6rcl+WGlW0/Sa22mfhCZOq2x082ix6\njkm822pO8VrPdr4dNObVeDo8XW3uzMbzK+mvxT7szE27cvnu9j7PcNjSaXx8mOIzZevbrEeic5tN\n+SZnpt8J4fHD9HXHO3PPW0x/DeBtJxx29vaAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAKNRim9Z5e89Nl4DzXtVh5babURHrSf7f3ec1+qnDorWrvvt5Pccb0n0zhmWk\nRvevv1+cPE2rGTFNZU26PFfxwa5dVkjelI2772nZnX6bbrEUq3o0d678u8wmuDL2ittvVjXdneeK\ncGv4jpJ6U56+kS7+j118+GLXpakzHaWlp9NNY3tv+bbiYiNoQy1y30uyZJlrWmZnuym6q1iIJnop\nyW2Te8bdWnnypQqzZOadokiIpSZntWN5lrxki19vNRxrUeBwnNNd+fJEY6/OejXLn3Xe/wDp9wyn\nE8uo4lqqxblv7lJ26T6vpD5X7G8QycKzeBMbzMRM1/FH/wA/h9QwZ6ajDXLitvWzRgsAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeL45w+dDrZvWv1OWd4+E+j2jX\n12jx67TWw5Y6T2nzifU+rZ1y9eHwzDYxxEy18+DJodXfT5o96vafWPVbjyxDn1OOzHudbM0rt2UW\niI69mVtRXZq5tREb9VUoy2iIlRbJ0UX1VZ6btTLrI7V6yk62M2oisT1c7JmtkttVMUyZp6x0beDS\nRWOvdKijDimvWd3G9pNRMfRcNfvZOb9Hpb0itJeP47k/3hgjaZnbaP1XxWW3T0movbNS0W645nbf\n0nrMPpXs3xamoxdJiLbe/X1n8Uf3fKsOTw4jbaXo+EarJhtGTHMxeJ6xH7Sti9Zaj6x3HM4NxXFx\nDS1mtoi8dJrv2l011QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAGjxLhODieOIye7kr9m8d4eM4to9RwjPXFa0ZIvG9bR0fQXmPbDFvTTZPOJmEWS/V8bs9R43NxLL\nG8eFbePg1bajU5/s0l1ceKLx1hbjwRE9mOpx0y2uRTSZsm3PMw2aaKtIjo6kYo9EXpET0hVLXxYK\nxC6MZvyx1lFs0RHfaPiCnU12pLyHGNDbUajBekWma2npWN3p8+opa20e9LSyZLxExTlpM+vdOdcZ\na9tPS8MyUvFrzWlI6727u1pYxYrbVmb7x+TQx6au3Nqcl7/0rcmW9axGnwZJj1novmxnZXV0fFp4\nZxLBPgTGK8xzXr5fOH0bFlpmxVyY7Rato3iYfNuG2x56Wrqa8s2jz+7Lu8O12bS6jkwzN6THNNI6\ntvrN68Y4rxlx1vHa0bskAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAA4XtTTm0OKfTJ/aXdcL2pyRGjwU362yb7fkJz9eTxxyZJjyltRXzUZK7TFtl9Lbwy06YzrHwa+\nfJFd/wCVt8m0bQ0eS2qzcm+1K/an+zNZFL5M1pjFXeI72ky48eGnPkvNp27+TPU6nHpMfLXaIjpE\nerk5dRMxOfN1mPeisfshW1ne1a1577Y6x5R3U0zze31FOWI6ze0byU098kRlzbxM9qrMlPDpyRMR\nMd5Vt/Ihp5898mWZm1pjftE91uCt7fCI7dWeHDEW3t723l6rslqxWZnasR+SYhFbzhnfxJ2jyeq9\nlcGXWZcmW0zWKxHLaI7794eJx5fpfEKabT8t8l5isddo3l9S4VjrwrRUwzSJt3tav3pdOL6Y6dXD\nj8HFWm+/KsU4NRXPvtWazHquWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAa+fXYNP9u8b+kdZBsDkZOO135cWOZn4y5Wu4xqctbe9y19Kp4njt6vi+PDm8DFMWybbzPlV\n5PiGtz67UxbNbeKTtWIjaIXYpnwuaftT5tXJT3vmi1pMsrU5qIrG1V1a+5DCa7b9GFbRr5J6Wnbt\nCu+Wmk0m8956z8ZWZNorbfzcbX5rZslazPux3hUt41NTntktObJ13+zX1bek01r4/HzVm0bxPXy/\n+bNfDgjVa2uOY92kdfg6ufJOKvLXtttVVSqbcta2vM7zXtHpLQy5ZtMd+vWd+7Zy3mdJHXra3f0c\nvUarw7zFY5rT2hH1Lavnrgx81p3U49Pk4nE5L35MO/StfNRXR5tXnrS8W67WvfyiPSPi7uLHFK1p\njrtSsbR5Lc4RzsXBaYreP4l45esRD2HD9fnw6evvWvO3Tfr0aGk0U55ra0TFInv6uzgrXFXlx0i0\n77RPlC83Yj+JW7oddqr6vHzTTw9/f6dod+L1t9m0T8pcbFSmPHER3892W0zPuz+jSbVvidkcqmfP\nSel7bekrI4n4dZnPWIrHeYnZee2Wpy8dEaml4npNZblw5qzb8M9JbYgAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAABEzFYmZnaI7yCXL1XGa0jJXT0571nbee27DiXEprp8nhbxG20W8\n5cbD0ikfnKO+urTPvjoZdXqctdsmTaPSvRpWmsdZ6yztfaGplvv3lWW1tyRlz1x0vkn7Vo5atTNe\nY0+1o79V2KsZsvX7Ne5mwxnyTNvsx2iGneM/rCdRSuOsTasTt5kRFtpjqmOH4t4nk7estiMNa97R\nHwhna0iuKTEdmGWa4672nZtRele1N59Zlq6vLOSsYorEc07qcW65euzRvtXvPZy52naZ7ujr6fXV\nrWdukREK8+njHgmZmPc67bq6ivVWhxxgxZLztNrT1mZ/SP4VZs0zaOvfp84WUtNsXLvtv3699+rU\nz7+Jtt5qURqMnPpctaR1rMSw4ZoK57eNk6xHaJRh97Ltt7lo5Z+L1HAPZvVauZ2nFTSzMTzeJEz8\nto6xPfvsZntPZ9rXxabmxzefdrv0j1dXh/BcmstW1qxTHHasR3+b0GPhGl+kWmd64dNEVjf73T7X\ny8vy+Ddx6O3iRakxTH5RXrMw1/lX+3Itw2MFIraN48qRHdZi0cUjmmPen9noox1iO0fNzdXEYrTt\nstcmd9aX0bJ+HePmiKTitO8TMLZ1cVjrMfqpz6ys4pjfrPRWZ9rXXptUit6zO+23VyaRHEc05L1/\nw9J9ys/en1ljqdVbwYw452tlnl3jyjzbmmiMeKtYjpEbLeTXPUU8ee/+qjJpsV5rbkrFqzE1tEbT\nDpYNbW21Mnu29fKWna0KbqTdjXXjld0cvQ63ltGHNPSfs2n+HUbS9c2s2UASqAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAOVxPWe99HpP8ArmP4b+r1EabT3yT3iOkesvMVtN7za07zad5l\nXV5GmM9vVfEstvDx0jtaVVMlq+UJ18b5cMRvPeSuK87bUt+i2Z3PtG7zXpjkzXt6R+TXyTMzvM7t\nydHqZ+zhv1+Cv/ZuqvPTHMfOYaTMil1a1K2vHSLTELq2v+KWzThGo84rH5rq8JzedqR+ZeI7WnOS\n34pYTafWXR/2Pln/AMyrKOCWnvmiPyR6O1y9585lhWJvl557Q6eo4T4dYiMvW3b3UanhldHpJtGX\ne09unmjsT7eb1l4trI2t0hsZfrdNO0bzy+nzU20/+NmkzO9esz+TZxWis9dttvPv+Tn21jjaW8zn\n26bTG3mp1M/Wzv3t0jyWXiKZJmsTERaZhXXDbNl8WaztWenxZLstPp5pau8frDtVrNMM5cfTfpMf\n3aunxxbes9d/R09Dp8ebJi09ptFr3jtt2WyrW9wy1Jx132mK+Xq9PotT0iIU19ntLtExa3T47T+q\n6nBaYvsZstZ+cT/LeMnUi0TXffo1s2m8Ws2/OIMWk5Jib5L328rS2t94Sh5TV4ppklpW6PT6rh+P\nNbebTHyas8E081mZy5P2W6OFhjxNTE/hr/LoRO0Kvo9dPqctKzMxEx1la5t3tdnjnMs4noievcrO\nyZjeFF1OSnNV0OG62cn1GWffj7Mz5w05joovzY7xes7TE7w0xrjPeex6Ua+j1UarBFu1o6Wj0lsN\n3JfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACrU5o0+nvlt92P3BxuM6nxNRGCs+7Tv8\n2hToxm1r3m9utrTvMsonqyt7XTmcja0u3O6FMfi5t/u0/lzdJM81p9O3zdvHTwsUR5+bfPqOfX1h\ndqV+3O7bs1+T31oqmI3TEM4rvCdkDGIIhlFd2daboS0NXG2bD6bufxXU1vlmu/u4us/N0+L1tTSx\nkr9qk7w89j1FNZMV3jxLzvaJ8mer+LSOZqK2xZotbvljfr/89U453rXt9lse081xZtNjx7TGKu0t\nDHlrevSevaN5Y6+tJ8c7VRNMt63n3ub+6/R54rERMztDYy4a5omclYmfxKcenrjtHLvtPrCnVmdb\neFe3JXmjy6eS/DrMuLVYsta9Mdt++6qLxO+0dEc8UmInr18iUfReHcXrqccb9Z27Q61Lb13eJ9nc\n1Z35rTvE9avY4bTkpG8xEfB05vYxqybc07R281naGMREdoT5JQqy9mply7Q3bV3iXG1eXw7TWSka\nc258t7+tpT5/BjT7MfHqndz12Z+M4lMMKyziUJJiN1WSu9fku23RaOgKNJqbaTU1t9yelo+D0cTE\nxEx1iXmM1Nt3W4PqvFweDaffx9vjDbGvxz+TP66QDRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAOJxzU73rp6z296zsZMkYsdr2naKxvLyObNOfNfJbvad1dXkaeOdpvsc2yuZVzfbfqybutwu\ns5s8R92J3dvJb3tnO4HSMegtmt3nfZvYp8SZl0z45NfSK7onH1bNcfRFqnUKJr0Y7dVtq7prjEsK\n0XVpEM6028mW20IHK41aPo3J6zs4ODhdcvPnvExFevNXpMOrxi/PlrTee7PLX6Pwa09uaNlKtHg9\ndM3z5d7ReOu02nu0JzZMfblrv5R5uvrcdImZ26T1mYhxs1Os7RH93PZ7axuafNfLitvbaYU3yZYt\nPXs9NwHhui1HBa5LVicsb81onrEuVqNNSuS8Y67dZ6xPZa59Il9uX41vEitImZme3q2Kxbxora0T\nMd/ROSa4Ztkj7c9OafL5LuGYubmyX3iu/TfbdSfVnpvZLT/XZK233+Mbbva1xRXyiPk8pwbH4N6T\nadq5a71n0tD1WDL4tPe6Xr0tDpz8YVnJHWEXYxbqlBedoef4tW0XraO09HdyztSZcbUz43C+ee9b\nSVMaeOfqq7+jGckQ1Yz7+7v2RN/WXPXZPjci2+2yyJaVMuy+uSJlA2d+pNoVRbeDcSxyTE+TDDlt\npdRXLTynrHrDOyiyZeVFnY9TjvXJjres71tG8MnJ4Nqt4tp7T1jrV1nRL1x2cvABKAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAHJ49qfD09cNZ97JPX5PPw2uI6j6Vrsl/ux7tfk1mWr7dOM8iLdm\nvfebREefRsWldw7SxqNbWbR7lPesrn3Vteo7dYjDpMGCvfbeXQ0uLlxRLRxROfUc34p6fCHYrXlr\nEejqrjY8uzCYW7MZjdVKqK9VlaxCYrsnYExBMRMJRPZA8/xPHtmpP9W2xx76vhWOInvt/C7ike7N\nvwzE9kcapGfhlevTaFbFo8RqJ5vy8/RoW09ek0msxHfp3dzNoLzp4zUmZpMbT8HJyYJi20X2n0lh\nZY1li/RaidBF4w2mK3jrHaFGp1lN+tptPp5IjBkid5mIp16TKu0abBPv33vPlM7z+iPdFNcWXU5I\ntkrNce/b1W5db1nTaf3ax9q0fxDW1ebNk2phty1mOu09VOm8W19orEz23j1TwfSeERFuEYMddptW\nd43dvBn21eKJ75KbW+cf/JcTgMxXTb3nbljz+TpcPmc2uyZO1KRtVtGVdi0bx07qJnllsRO6rNTe\nN4XVamsy8mnvPwc3R2jPwe8TPbdlxXNOPSZfhWWpwO85OFzv57qrODkzeHntSe8Sn6Rv0a3EZ218\n8nXekfr1a0ZLVnqx19dWb6demXybOO7lYMvNMdW9S/VVLo0us7tPHdtUtEwJiZU3jq2Jhham8CVG\nPNODNTJXvWd3qcWSubFXJWd4tG8PK3pPd1OB6veLaa89Y61/u2xfxh5c/rsgNHOAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAANLimq+i6O0xPv392rdeZ4rq/pOqnlnelOkIt5F8Z7Wj27I2I6sb25YY\nV1ImY3dbQ08LRc23vZp2j5OJG+XJWle9p2h6HHtbJXFT7OOIpX+7TxT31j5rycdTh+Dpz+XaG/sw\nw18PHWseULN2trBE9UcrJKBhFU7JAQi0dEomegNDUYovM7x3jb5tO1ZvpbaTLtzRExWfWPJ08kbT\nEx5NXWYYyV5omYtHWJieyeDzuizfRs19Jn6TM7Ru1uMcJxZqTkw+5f4ebqa7SV1MR4tdrx2vEfy1\naxqsNOTLjnLXytVXi3Xj8+nmsxTLM16d5npPyUzpekTtSK+U7vS6vQ/SYmK1vWPS1HOn2dvvvvE/\ntDO5XlcO+LbfHSd/W3o6/BdDOXPTnj3Kz38rS6Wm4FNrRyRzTH3p6RH/AKvR8L4dXSzE3jmtHn5I\nmbfqLV+m4dbLSsZInHjr3iI6zLpYaxS01rHuxHRHiT9mv6s67Vj1aqL6326MrWiYa+/Q54BxPaGe\nXRZpj8MquB4+Xg8zPnB7SX30to379GxpK1xcHiKz5IS8xr8PLPixH2bftLTy05o6dHYyVjLhy0t1\nizjZa3pMVv3iO/qz1G2L+NbSajbNyW7xLsY8kTDz+fJXFqKZN4iZnafi6WHL0iYlStI7OO+7axW2\ncrFl7dW9jvE9ULN+J3ZbdFGOy+AYWpEqN7afNXLj+1Wd23KrJVMvCzseh0+auow1yU7WhY4fCdV4\nOadPefcvPuz6S7jol649Tl4AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV581NPhtkvO0R+4NPi2\nr8DB4dJ9+/7Q83Po2NTqLanNbLfvPaPSFDHV66sZ5ET0hRknyW2lTtMyouz0c8usx2n7s7vScKwx\nzc1vu/y85p+maJh6Th+SOWeveXR4/wDLm8v+nX5mUWa9bbrInolmu5jdTNkxYFk2Isr3TuCzeGMz\n+THdEyDDJO9Ja823rt2XWnya946pGvktDXta0ztWu/ybvLE9dkcoOf4GbJPWK1j49VmLh9JtE33v\nMevb9G7WsW8l1ccREISophiJ2jpDYpijbaOjOuOJ8ujOdqxsgVcsUjaETYvbaFFrgu5lVsm0yUtu\nryg43H5m+GIj1XcJzePoL4pnrWGtxmfchr8JvfHS1622if3QljzTTLes+qrNjrkiYtCzPMxnm095\nYZJ6boS5teB49Tqscza97VtvWvlv8V/FOF34RrIxTM2xXjelp/eHoeA6XnzReY3ivX/0dfivDcfE\n9HbDbaLx1pb0lOs+jO7K8Lis3cN+0NKcd9PmthzV5clJ2mF9J9GHHVL108dm1SznYr/Ft0tuhLb8\nmNohFbMhLWy0mJ3rPXvDvcO1karBG8/WV6Wj+7kWrvDDBlvpdRGSnbzj1hpjX4z8mOx6UYYstc2O\nuSk71tG7Ns5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeXneJ62dVl5KT9VTt8Z9W9xbWclPo+O\nfft9qfSHEU1pv48ftYST23ZTDC/p0YtlVuvVjMbM5+LCZjYGWGdrTPxiHY4ffaf3cjTxz1v6xMS6\nOlty2iXVj/Dk8n+ndrkhnGRo1v8AFdW3RCrZ5uiYsqrboncSu508yjmZRYQt50TfowYTbYGVrKrT\nuTZjvukQnYhMIGVY2ZxPVWyrHVCWzXpVXkt3TE7Va+W4K7X3jv1auTNy3jdba0RZpamfroQN7Hk3\n6wr1GTaN2OOJiu6Mu98NvgDi8Wy74d/yZ8PiPAiO2zU4nb6qIn1bugjfFE/ASp1ke9u15mbbRDZ1\nMb823kx0Ontn1OOkedoJCvT8I03gaKsz9q/WW+isRWsVjtHRKyrhe0XCfpWL6Vgr9fjjrEfeh5fF\nfeH0V5Dj3DPoOo+k4a/U5J6xH3ZZ7z3228evytOk7NvFbo0cdols47bSybt7HbddHVqUs2aW3Qnq\nxVeu8LILR3SlZw3V/R8nhXn6u0/pLuPMXjeHT4Zruf6jLPvR9mZ8/g1xrvpz+TH7HUAaMAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAABRq9VXSYJyW79qx6yvmdo3l5viGs+maqYrO+OnSvx+KLeLZz2te1rZL2v\ned7WneZYWnZl5K72YV1xEyxmeqJljzIEWlVkszvbZp5soN3h2SJz3pP3odCnuWmPRxuERfJrZmtZ\nmtY96fR28kbX3dXj/wAuTyf6bmK+9YX1s0cNtm3Sd4LFY2K23W1s16StiUJW7bp22RW3RluBuruz\nmWEgrmCGWyNkoExKE1QlPmsqRDKeyBjaejWy2W3ttDUyz1QKslvehVqKTNosyyTvELabXptIJpaP\nB39Ia2mz+JGpr51jdZefDx2hzuHZObNq58poJaGtjxJ2+LoaKP8ADRPo5+T3skx5OhpOmC0fBNQ0\n5yTbn+bt8A0u9raiY6RHLVwY62mI6zMvaaHBGn0mPHt1iN5+aYVsACBXqMFNTgviyxvW0bSsAeE1\nmkvw7V2w5Ote9besJx2er4rw2nEdNNekZa9aW9JeQjnxZLYskTW9Z2mJY7zz26fHrrdpbZsY7NGt\nmxjvso1b9NmUwpx33XRO4K7VUTE1nmrvEx1bVo2VWiJE/XY4frY1WPlt0y17x6/FuPM0m+HJGTHO\n1qu9pNVXVYt46Xj7VfRtnXXL5MfzexsALsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHM4jxOMFJphmJv529Dq\nZLfjDjPEIx450+K3v2+1MeUOHSOWFc3nJkmZnf4yujpVlqunOeFpV2nctLCZUXRM7MJtsWlRkv3Q\nky5NmpWt9RnrixVm17TtEQnJabXisRMzPSIew9n+CRoccajURvqLx5/chfOest642OGcIpoOG2w7\nROW9d72+LQvXevyejcPUU5M+SvpLeOataraw2a0dLbLqTtK1G3Es4lVWWUSoldFtmcXUbpidgXzK\nGEW3TuCUSncnsDFMMLSms9EC6J6FpVzbZE5ALy0809ZbFr9GtfrEoFMzuuwz0Ueey3HbaBLDXe7i\ntMOfwWnP9I+NZbuttvhs1uBRtXPb4SDm3iIvf57N7Dbl0VrS5+XrltEd+Z1Jx7cNms9N4TURRw3T\n+PrcO3WszEvZOD7P6aYiMlvu16S7y1QAIAABxOPcLnUY/pWCv1tI96I+9DtgmXl68Biy7/NtUu3+\nO8HnFa2s0tfd75KR5fFyMWTdhrPHVnX9R0cd21S3Rzsdm1iuqs256wrmGcT0RYSx5d047X02SMmO\nesd49YRE9WcdSXhZ2O1p89NRji9J+cei1xMc3wXi+KZj1j1dTTaqmor06WjvWW+ddcu8XK8BZmAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAMMmWmKu952UZ9XFZmuP3revlDTtzWnmvO8q3XGmfHb9ZanV3yxtWeWn7y4es\nvPNtDqZJ6Ts5mppvdl/XXRMyfGvSNlu/RVvtOzLfoipLT1VTKbSpvfogRkvtDVyZOhkyvQcA4Dzz\nXV6yvTvTHMfvK+c9U3rkW+zvA/D21urr789cdZ8vi9KDb45rejl8Rry6iJ/FV1HP4vXbBTJEfYt1\n+UpiHM295bXsqrO9l8QkZ0lZEqqLeyBZHZLGvZkhIndADKJ3TMoqWQMZ6pjsxll2jsCLSrmU2lFY\n36gieyu0LJk3jbsga0wdqzK20QpyztQGprL/AFMrOE05NLkt6qdVWZxNrSe5o9vWBLiUjnzXn0vL\nq555dHt8HOwV928/1z/LpzXxbYccRvzTB+jucOwxh0dI22mY3ltIrHLWIjyjZKyoAAAAACJiJjaY\n3iXleM8InR5J1GniZw2n3oj7s/8Ao9Wi9a3rNbRE1mNpifNFnVs65XhcWTdt47bnFuF24dm8TFEz\np7T0/pn0a+HJux1OOrOux08d1ndqY7tillVkzExLOk7yd4YxGwluViJhE45raL0na0dtlWO0+bZr\n1TKi+2zptZGTamT3b/tLacvJjiY3XaTWdYxZZ6/dtPm1zrv1z78fPcbwC7EAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhkyV\nxUm152iAZWtFazNp2iGhm1Vss8uP3aevnKrNntqLdelI7VRHRnrX/HRjx/tZREVjZXeybW6KbWZt\npCZ6S08tN7Nmbb7zCrJtyoS5145bSx5mWafelr3tsKmS/o08uXyhlly7RPV2+AcBnPNdZrK+53pS\nfP4ytnPVda4y4BwHxOXV6uvu96Unz+MvVxG0bQRG0bR2G0nHLb2gCUDX12LxtFmpHeazt82wT1gH\nmMN4tWs+rcr2aEV8DU5sM/cvO3yb+O0csLUTSdrLphRE8tlkZI7Atr2ZMazDJVKTYSCawi7Ksq7z\n1QERvLK3ZGPrKbyCrbdnMcsbeaa18/RhvvM7oGEwTG0JmYYTIML22a2e28xELM19oURPNO4lOem+\nn3ZY5+prVnMc2GYU4/L4A0a15cNf6rz/AC6fC6+NxCPOuOu/5tHJTbHj+F5/l1+BYumXJMd9o3/d\nMRXYASgAAAAAAABhlxUz4rY8lYtS0bTEvH8R4ffhmo6bzhtPu29Pg9mq1Gnx6rDbFmrzVsizq2df\nzXkMWTeIbNL7tbXaHLwzUctvexWn3bmPL8WFnHVL326VZ91MfFVjvvVlz79kLrcf2m7j7bNHH3bl\nJ2SirLQoy4t1++7G0dBC/RanxI8PJPv18/WG241+alovSdrV6w6mDNGfFF4/OPSW2b1zeTPL1aAs\nzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAVZ9RXBTe3WZ7R6iZOpzZq4ac1p+UermZMl89+a/byj0Ra9815ted59PQ32hlrXXRjH\nDpCLX6ML5NlNsm/ZRqstfdXzbsZt06sLZNvNB1Za8RDWyZdo7q8udq5Mu/mIMt4md2lmy7JzZuWJ\ndHgfBL8RvGo1MTXTxPSPx/8AstJ1XWpIs4BwSdbeNVqq/URPu0n73/s9hEREbRG0QUpWlYrWIisR\ntER5JbSccur2gCUAAAAPM8Sry8Uyz67fwuxbzVPGsE49XGbvF42V4M0TEL33ERnktsxpk3sumK2j\nadmFdPFZ33VS2Mdui2J3UU6LYlFSsN2O5NkCyJ6K7T1TEsbAsxdpReerKkTFGMxvYEz0rsqtbbpC\nb2VT1QEzuwtbaGUxspuJU3neWdKoiu8rq12gCI92YatLcublnzbEz1aOptyZqTuDHLfxN6R0+t5X\nqdJhjBp6UiPLeXl9NSMnEKxHa1+bb8nrlvxUAAAAAAAAAAABTqtNj1eC2LLXeto/R43VabJw/VTh\nydY+7b1h7ho8V4dXiGlmvbJXrS3xRZ1fGv5rzeHN02bEW3cys3xZJx5ImtqztMS3MeTeGFjqlb2O\n8btql3NpbZtYsnSBLeiWfdTjtutid+ghherHS5p0+f3vsX6T8Fkw181d4lMvEWdnHaGnw/UeNh5L\nT7+PpPxbjdyWcvAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAo1Oprgr63ntAmTqdRqK4K9etp7Q5d7Wy2m953lNrWyWm953mVd77R0\nZa1104xxlN9lV8qnJl2a9s3xUXX2ybsJyRDWtl3YWydEC+2VRkzeW6q+T4tbJm+KRdfK1cmWZnlr\nvNp7RC/R6HU8SycmCk7ed57Q9ZwvgOn4fEXtHi5/O9o7fJaZ6z1uRyOEezVstq6jiEbV71xevzer\nrWtKxWsRFY6REeSRrJxz22gCUAAAAAANbX6aNVpL0npMRvWfSXlKamsRMVvXm+EvZXjmpaPWHzfL\noNRjzXicfWJ8phfPxFejx72x7xMzK+sXiNoiXlq+Pi6fWV/VfTNqfLJl/WTg9Pji8R70LqvMV1Gq\nj/zcv6yz+lanzzZP1lWpelTET6S81Gp1P/Gyf90s412rjtnyfqql6asREdWM9+jz9eJ6yP8Az7uh\nodZqMt458tpB1JvEViI3/RhzRt13/R1MNaziiZiJn5K9ZNceKZiIiQcu/WekT+iYrWI3lzdTrs+8\n8uW0fJzcur1Np/zsn6g79phVaIeetqNR/wAXJ/3SwnUaj/i5P+6UD0ldonum161h5mNRqP8Ai5P1\nlNtRqJjacuT9Qd22WN5aGeZyZd/KHJy59RHbLf8AVq31Gp/4uT9ZEvS8Lr/vSs2npzRtL1z53wK+\noza/HW2XJNd99pmX0Rb8VAAAAAAAAAAAAAAcHj/C5yV+l4I9+v24jzj1cLFk8nu5jeNpeW41wmdL\nknU6ev1Vp96sfdn/ANFdTrXG+eq1q5F2LLtbZoY8m8d11bbSydErsYsm+zZrO/zcnBm226uhiyRK\nEtrvCrJDOJTeu8A1MWX6Lqq5N/dnpb5O5ExMbx2cPNTeJb/DM/iYPDtPvY+nzhri/jDy5/W6AuwA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], + "mappings": "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kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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AAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,M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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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", "names": [] } diff --git a/dist/human.esm.json b/dist/human.esm.json index 4879dded..2bb739c2 100644 --- a/dist/human.esm.json +++ b/dist/human.esm.json @@ -5,7 +5,7 @@ "imports": [] }, "dist/tfjs.esm.js": { - "bytes": 1526803, + "bytes": 1526705, "imports": [] }, "src/tfjs/backend.js": { @@ -44,7 +44,7 @@ "imports": [] }, "src/face/facepipeline.js": { - "bytes": 13836, + "bytes": 14062, "imports": [ { "path": "dist/tfjs.esm.js" @@ -64,7 +64,7 @@ ] }, "src/face/facemesh.js": { - "bytes": 2816, + "bytes": 3054, "imports": [ { "path": "src/log.js" @@ -350,7 +350,7 @@ ] }, "config.js": { - "bytes": 9530, + "bytes": 9644, "imports": [] }, "src/sample.js": { @@ -362,7 +362,7 @@ "imports": [] }, "src/human.js": { - "bytes": 16644, + "bytes": 16727, "imports": [ { "path": "src/log.js" @@ -419,7 +419,7 @@ "dist/human.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 2106312 + "bytes": 1776771 }, "dist/human.esm.js": { "imports": [], @@ -440,10 +440,10 @@ "bytesInOutput": 30817 }, "src/face/facepipeline.js": { - "bytesInOutput": 9329 + "bytesInOutput": 9513 }, "src/face/facemesh.js": { - "bytesInOutput": 2202 + "bytesInOutput": 2378 }, "src/profile.js": { "bytesInOutput": 846 @@ -518,13 +518,13 @@ "bytesInOutput": 266 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1525301 + "bytesInOutput": 1525250 }, "src/tfjs/backend.js": { "bytesInOutput": 938 }, "src/human.js": { - "bytesInOutput": 10996 + "bytesInOutput": 11039 }, "src/hand/box.js": { "bytesInOutput": 1473 @@ -533,16 +533,16 @@ "bytesInOutput": 1796 }, "config.js": { - "bytesInOutput": 1492 + "bytesInOutput": 1509 }, "src/sample.js": { "bytesInOutput": 55295 }, "package.json": { - "bytesInOutput": 21 + "bytesInOutput": 22 } }, - "bytes": 1839457 + "bytes": 1839826 } } } diff --git a/dist/human.js b/dist/human.js index 7d199791..e9d92988 100644 --- a/dist/human.js +++ b/dist/human.js @@ -5,50 +5,50 @@ author: ' */ -var Human=(()=>{var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var Human=(()=>{var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all2)=>{__markAsModule(target);for(var name in all2)__defProp(target,name,{get:all2[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_blazeface=__commonJS(exports=>{var NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:slice(startEndTensor,[0,0],[-1,2]),endPoint:slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=mul(box.startPoint,factors),ends=mul(box.endPoint,factors),newCoordinates=concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=slice(boxOutputs,[0,1],[-1,2]),centers=add2(boxStarts,anchors),boxSizes=slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=div(boxSizes,inputSize),centersNormalized=div(centers,inputSize),halfBoxSize=div(boxSizesNormalized,2),starts=sub(centersNormalized,halfBoxSize),ends=add2(centersNormalized,halfBoxSize),startNormalized=mul(starts,inputSize),endNormalized=mul(ends,inputSize),concatAxis=1;return concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model2,config2){this.blazeFaceModel=model2,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tensor2d(this.anchorsData),this.inputSize=tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=concat([sorted[0],sorted[2]],2),concat512=concat([sorted[1],sorted[3]],2),concat2=concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=slice(prediction,[0,0],[-1,1]),scoresOut=sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tidy(()=>slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input2){let{boxes,scaleFactor}=await this.getBoundingBoxes(input2),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model2=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model2}exports.load=load2;exports.BlazeFaceModel=BlazeFaceModel;exports.disposeBox=disposeBox}),require_box=__commonJS(exports=>{function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}exports.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports.squarifyBox=squarifyBox2}),require_util=__commonJS(exports=>{exports.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot3(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports.TRI468=TRI468;exports.TRI68=TRI68;exports.TRI33=TRI33;exports.TRI7=TRI7;exports.UV468=UV468;exports.UV68=VTX68.map(x=>UV468[x]);exports.UV33=VTX33.map(x=>UV468[x]);exports.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports=>{var bounding=__toModule(require_box()),util=__toModule(require_util()),coords2=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords2.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords2.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input2,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input2),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input2.shape[2],faceCenter[1]/input2.shape[1]],rotatedImage=image.rotateWithOffset(input2,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input2.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports.Pipeline=Pipeline}),require_facemesh=__commonJS(exports=>{var blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords2=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input2,config2){let predictions=await this.facePipeline.predict(input2,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input2.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input2.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports.load=load2;exports.MediaPipeFaceMesh=MediaPipeFaceMesh;exports.triangulation=coords2.TRI468}),require_profile=__commonJS(exports=>{var profileData={};function profile3(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time2=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time2,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports.run=profile3}),require_age=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image3,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=mul(resize,[255]);dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile3.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_gender=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image3,config2){return models.gender?skipped{let resize=image.resizeBilinear(image3,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tidy(()=>{let[red,green,blue]=split(resize,3,3),redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]),grayscale=addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=mul(resize,[255]),dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile3.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_emotion=__commonJS(exports=>{var profile3=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale2=1;async function load2(config2){return models.emotion||(models.emotion=await loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image3,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=split(resize,3,3);resize.dispose();let redNorm=mul(red,rgb[0]),greenNorm=mul(green,rgb[1]),blueNorm=mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile3.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale2*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports.predict=predict2;exports.load=load2}),require_embedding=__commonJS(exports=>{var profile3=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding22){if((embedding1==null?void 0:embedding1.length)!==(embedding22==null?void 0:embedding22.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding22[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image3,config2){return models.embedding?new Promise(async resolve=>{let resize=image.resizeBilinear(image3,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile3.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports.predict=predict2;exports.simmilarity=simmilarity2;exports.load=load2}),require_modelBase=__commonJS(exports=>{var imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model2){this.model=model2}predict(input2,config2){return tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input2.toFloat().add(imageNetMean):input2.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports.BaseModel=BaseModel}),require_heapSort=__commonJS(exports=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max2=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max2}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports.NUM_KEYPOINTS=exports.partNames.length;exports.partIds=exports.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports.partIds[jointNameA],exports.partIds[jointNameB]]);exports.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax2?max2:a}exports.clamp=clamp2;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports.addVectors=addVectors;function clampVector(a,min2,max2){return{y:clamp2(a.y,min2,max2),x:clamp2(a.x,min2,max2)}}exports.clampVector=clampVector}),require_decoders=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports.getOffsetPoints=getOffsetPoints;function mod2(a,b){return tidy(()=>{let floored=a.div(scalar(b,"int32"));return a.sub(floored.mul(scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords2=reshaped.argMax(0),yCoords=coords2.div(scalar(width,"int32")).expandDims(1),xCoords=mod2(coords2,width).expandDims(1);return concat([yCoords,xCoords],1)})}exports.argmax2d=argmax2d}),require_decodePose=__commonJS(exports=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input2=image3.squeeze(0),resized=input2.resizeBilinear([targetH,targetW]);return input2.dispose(),resized}exports.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports=>{var modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input2,res,config2){return new Promise(async resolve=>{let height=input2.shape[1],width=input2.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model2){this.baseModel=model2}async estimatePoses(input2,config2){let resized=util.resizeTo(input2,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input2,res,config2):await estimateMultiple(input2,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports.PoseNet=PoseNet;async function load2(config2){let model2=await loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model2);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports.load=load2}),require_posenet=__commonJS(exports=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports.load=modelPoseNet.load;exports.PoseNet=modelPoseNet.PoseNet;exports.partChannels=keypoints.partChannels;exports.partIds=keypoints.partIds;exports.partNames=keypoints.partNames;exports.poseChain=keypoints.poseChain;exports.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports.getBoundingBox=util.getBoundingBox;exports.getBoundingBoxPoints=util.getBoundingBoxPoints;exports.scaleAndFlipPoses=util.scaleAndFlipPoses;exports.scalePose=util.scalePose}),require_handdetector=__commonJS(exports=>{var HandDetector=class{constructor(model2,inputSize,anchorsAnnotated){this.model=model2,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tensor2d(this.anchors),this.inputSizeTensor=tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tidy(()=>{let boxOffsets=slice(boxes,[0,0],[-1,2]),boxSizes=slice(boxes,[0,2],[-1,2]),boxCenterPoints=add2(div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=div(boxSizes,this.doubleInputSizeTensor),startPoints=mul(sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=mul(add2(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tidy(()=>{let landmarks=add2(div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return mul(landmarks,this.inputSizeTensor)})}async getBoxes(input2,config2){let batched=this.model.predict(input2),predictions=batched.squeeze();batched.dispose();let scoresT=tidy(()=>sigmoid(slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=slice(predictions,[index,5],[1,14]),palmLandmarks=tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input2,config2){let inputHeight=input2.shape[1],inputWidth=input2.shape[2],image3=tidy(()=>input2.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image3,config2);image3.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports=>{var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot2(boxCenter,inverseRotationMatrix[0]),dot2(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image3,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image3,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords2=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords2);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords2,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports=>{exports.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports=>{var handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input2,config2){let predictions=await this.handPipeline.estimateHands(input2,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input2.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input2.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports.load=load2}),require_gesture=__commonJS(exports=>{exports.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos2=Math.cos(rotation),sin2=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos2*(1-lumR)+sin2*-lumR,lumG+cos2*-lumG+sin2*-lumG,lumB+cos2*-lumB+sin2*(1-lumB),0,0,lumR+cos2*-lumR+sin2*.143,lumG+cos2*(1-lumG)+sin2*.14,lumB+cos2*-lumB+sin2*-.283,0,0,lumR+cos2*-lumR+sin2*-(1-lumR),lumG+cos2*-lumG+sin2*lumG,lumB+cos2*(1-lumB)+sin2*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version21,version_converter:()=>version17,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version13,version_wasm:()=>version11,version_webgl:()=>version9,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all5)=>{__markAsModule2(target);for(var name in all5)__defProp2(target,name,{get:all5[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer11=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer12){GROWABLE_HEAP_I8().set(array2,buffer12)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer11=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer11=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer11.byteLength,updateGlobalBufferAndViews(buffer11),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data2){worker.onmessage({data:data2})}),worker.on("error",function(data2){worker.onerror(data2)}),worker.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack9=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer12){HEAP8.set(array2,buffer12)}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool6,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min8,max10){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean7,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse12){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real8,imag8){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min8,x,max10){return Math.max(min8,Math.min(x,max10))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add33(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` +`)};exports.Canvas=WebGLImageFilter}),require_image=__commonJS(exports=>{var fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input2,config2){let tensor;if(input2 instanceof Tensor)tensor=clone(input2);else{let originalWidth=input2.naturalWidth||input2.videoWidth||input2.width||input2.shape&&input2.shape[1]>0,originalHeight=input2.naturalHeight||input2.videoHeight||input2.height||input2.shape&&input2.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input2),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input2 instanceof ImageData?ctx.putImageData(input2,0,0):ctx.drawImage(input2,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DBackprop:()=>AvgPool3DBackprop,AvgPoolBackprop:()=>AvgPoolBackprop,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,Div:()=>Div,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GPGPUContext:()=>GPGPUContext,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNBackprop:()=>LRNBackprop,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,MathBackendCPU:()=>MathBackendCPU,MathBackendWebGL:()=>MathBackendWebGL,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DBackprop:()=>MaxPool3DBackprop,MaxPoolBackprop:()=>MaxPoolBackprop,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multiply:()=>Multiply,Negate:()=>Negate,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,SelectV2:()=>SelectV2,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend2,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine15,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,forceHalfFloat:()=>forceHalfFloat,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,gpgpu_util:()=>gpgpu_util_exports,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log2,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setWebGLContext:()=>setWebGLContext,setdiff1dAsync:()=>setdiff1dAsync,shared:()=>shared_exports,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor4,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version18,version_converter:()=>version14,version_core:()=>version6,version_cpu:()=>version7,version_layers:()=>version10,version_wasm:()=>version9,version_webgl:()=>version8,webgl:()=>webgl2,webgl_util:()=>webgl_util_exports,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all4)=>{__markAsModule2(target);for(var name in all4)__defProp2(target,name,{get:all4[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_alea2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=data2.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS2((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer10=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer11){GROWABLE_HEAP_I8().set(array2,buffer11)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer10=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer10=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer10.byteLength,updateGlobalBufferAndViews(buffer10),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data2){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data2){worker.onmessage({data:data2})}),worker.on("error",function(data2){worker.onerror(data2)}),worker.on("exit",function(data2){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data2;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data2=read(f,"binary"),assert3(typeof data2=="object"),data2)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer11){HEAP8.set(array2,buffer11)}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data2){data2=String(data2);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS2((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS2((exports3,module)=>{(function(global2,pool5,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),version="2.7.0",version2="2.7.0",version3="2.7.0",version4="2.7.0",version5="2.7.0",EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min7,max9){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean6,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse11){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real7,imag7){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min7,x,max9){return Math.max(min7,Math.min(x,max9))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum28=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config2]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config2)}return result}function registerKernel(config2){let{kernelName,backendName}=config2,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config2)}function registerGradient(config2){let{kernelName}=config2;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config2)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` `)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor168,tensorList){return tensorList.some(x=>x.id===tensor168.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor168.kept&&tensor168.scopeId===oldScope.id&&this.track(tensor168)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor168 of node.saved)tensor168.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real8,imag8){let $real=convertToTensor(real8,"real","complex"),$imag=convertToTensor(imag8,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor168=>tensor168.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer11){if(useNodeBuffer)return Buffer.from(buffer11).toString("base64");let buf=new Uint8Array(buffer11),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer11.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer11=>{temp.set(new Uint8Array(buffer11),offset),offset+=buffer11.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer11=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer11);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer11)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor168,indices){if(tensor168.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor168.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor168.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor168.rank}`);if(tensor168.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor168.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. +`;return lines[lines.length-1]=" "+lines[lines.length-1]+"]"+(isLast?"":newLineSep),lines}function createComplexTuples(vals){let complexTuples=[];for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data2}dataSync(){this.throwIfDisposed();let data2=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data2.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data2}async bytes(){this.throwIfDisposed();let data2=await trackerFn().read(this.dataId);return this.dtype==="string"?data2:new Uint8Array(data2.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor167,tensorList){return tensorList.some(x=>x.id===tensor167.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor167.kept&&tensor167.scopeId===oldScope.id&&this.track(tensor167)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor167 of node.saved)tensor167.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real7,imag7){let $real=convertToTensor(real7,"real","complex"),$imag=convertToTensor(imag7,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor167=>tensor167.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer10){if(useNodeBuffer)return Buffer.from(buffer10).toString("base64");let buf=new Uint8Array(buffer10),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer10.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer10=>{temp.set(new Uint8Array(buffer10),offset),offset+=buffer10.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer10=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer10);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer10)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data2=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor167,indices){if(tensor167.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor167.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor167.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor167.rank}`);if(tensor167.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor167.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config2){return new cls(config2)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. Actual: ${actualFlat}. Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp13=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp13,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor168=>tensor168.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad11,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad11,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad11,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad11==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad11=="object"){let top=dataFormat==="channelsLast"?pad11[1][0]:pad11[2][0],bottom=dataFormat==="channelsLast"?pad11[1][1]:pad11[2][1],left=dataFormat==="channelsLast"?pad11[2][0]:pad11[3][0],right=dataFormat==="channelsLast"?pad11[2][1]:pad11[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,front:pad11,back:pad11,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad11,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad11==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor168=>{if(tensor168.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor168.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean7,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad11,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad11,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad11,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad11,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad11,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad11),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad11){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad11);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad11,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad11){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad11)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse12=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse12);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse12};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${expectedFlat}.`)}}function expectPromiseToFail(fn,done){fn().then(()=>done.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp12=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp12,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor167=>tensor167.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad10,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad10,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad10,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad10==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad10=="object"){let top=dataFormat==="channelsLast"?pad10[1][0]:pad10[2][0],bottom=dataFormat==="channelsLast"?pad10[1][1]:pad10[2][1],left=dataFormat==="channelsLast"?pad10[2][0]:pad10[3][0],right=dataFormat==="channelsLast"?pad10[2][1]:pad10[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,front:pad10,back:pad10,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad10,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad10==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor167=>{if(tensor167.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${tensor167.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data2,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data2,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod4=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod4===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod4}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean6,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad10,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad10,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad10,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad10,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad10,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad10),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad10){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad10);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad10,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad10){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad10)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse11=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse11);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse11};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputHeight} and ${blockSize} for depthToSpace with input shape ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad11,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros10=zerosLike(divResult),bEqualsZero=equal($b,zeros10);return where(bEqualsZero,zeros10,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable3=>!variable3.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable3=>variable3.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad11,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad11,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real8=zeros(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real8=ones2(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad11,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad11===0&&(pad11="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad11),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad11==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad11:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp13){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp13,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul64=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul64,resultY=this.mean+this.stdDev*v2*mul64,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min8,this.range=max10-min8,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min8} - ${max10} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step9)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad11,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad11,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean7=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean7,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step9!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step9,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad11,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad11,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad11,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log6,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod5,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod5),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split5,tile:()=>tile4,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split5(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile4(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad11){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad11);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad11},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad11)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad11,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad11,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad11,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad11,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad11,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad11,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad11){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad11);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad11,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad11),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad11)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse12}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse12);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad11,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad11,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean7,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean7.shape,x.shape),tileShape=[];if(mean7.rank===1){for(let i=0;imean7.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean7.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean7.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean7.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean7.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean7.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean7.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean7.shape)},derOffset=()=>{let offsetDer=dy;return mean7.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean7.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad11,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad11,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad11)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp13=b,outShape=assertAndGetBroadcastShape(base2.shape,exp13.shape),derBase=()=>{let expFloat=cast(exp13,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp13.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp13.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean7,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean7,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min8,max10){return this.throwIfDisposed(),clipByValue(this,min8,max10)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad11,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad11,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad11,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse12){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse12)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad11,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad11,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp13){return this.throwIfDisposed(),powStrict(this,exp13)};Tensor.prototype.pow=function(exp13){return this.throwIfDisposed(),pow(this,exp13)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad10,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros9=zerosLike(divResult),bEqualsZero=equal($b,zeros9);return where(bEqualsZero,zeros9,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log2=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log2(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log2(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad10,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad10,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real7=zeros(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real7=ones2(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data2,c,h){let $data=convertToTensor(data2,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad10,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad10===0&&(pad10="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad10),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad10==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad10:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp12){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp12,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul63=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul63,resultY=this.mean+this.stdDev*v2*mul63,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min7,this.range=max9-min7,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min7} - ${max9} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step8)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad10,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad10,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean6=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean6,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step8!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step8,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad10,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad10,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad10,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log2(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log2(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.rho,config2.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.beta1,config2.beta2,config2.epsilon,config2.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config2){return new cls(config2.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.momentum,config2.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config2){return new cls(config2.learningRate,config2.decay,config2.momentum,config2.epsilon,config2.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log5,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod4,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod4),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod4,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod4):reshapedPermuted.push(inputShape[0]*prod4);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split4,tile:()=>tile3,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split4(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile3(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad10){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad10);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad10},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad10)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad10,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad10,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad10,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad10,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad10,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad10,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad10){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad10);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad10,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad10),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad10)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse11}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse11);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad10,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad10,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean6,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean6.shape,x.shape),tileShape=[];if(mean6.rank===1){for(let i=0;imean6.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean6.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean6.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean6.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean6.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean6.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean6.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean6.shape)},derOffset=()=>{let offsetDer=dy;return mean6.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean6.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax5=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax5))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad10,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad10,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad10)}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}},negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp12=b,outShape=assertAndGetBroadcastShape(base2.shape,exp12.shape),derBase=()=>{let expFloat=cast(exp12,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log2(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp12.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp12.shape)};return{a:derBase,b:derExp}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean6,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean6,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min7,max9){return this.throwIfDisposed(),clipByValue(this,min7,max9)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad10,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad10,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad10,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse11){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse11)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad10,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad10,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log2(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp12){return this.throwIfDisposed(),powStrict(this,exp12)};Tensor.prototype.pow=function(exp12){return this.throwIfDisposed(),pow(this,exp12)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule2(require_seedrandom4());function assertNotComplex(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split8=kernel_impls_exports.split,tile7=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer11=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer11.set(xBuf.get(...inLoc),...outLoc)}return buffer11.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax10&&(max10=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse12){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse12?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile8(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum29=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum29+=z*z}return sum29}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real8=complexVals.complexTensorInfos.real,imag8=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real8.dataId).values,imagVals=cpuBackend.data.get(imag8.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex9(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,realVals=backend3.data.get(real8.dataId).values,imagVals=backend3.data.get(imag8.dataId).values,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.data.get(complexInfo.dataId);return complex11.complexTensorInfos={real:backend3.makeTensorInfo(real8.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag8.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex9};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real8=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real8.dataId).values;return backend3.makeTensorInfo(real8.shape,real8.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real6};function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast48};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast48({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast48({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex9({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add31=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add31};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil4=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil4},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp12=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp12},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm14=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm14},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor6=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor6},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log9=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log9};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax10&&(max10=value)}vals[i]=max10}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt5=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt5};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice19(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice19},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub34=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub34};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu6=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu6},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu6},relu9=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu9},relu66=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu66};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu9({inputs:{x},backend:backend3});if(activation2==="elu")return elu6({inputs:{x},backend:backend3});if(activation2==="relu6")return relu66({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu6({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape87(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real8=xData.complexTensorInfos.real,imag8=xData.complexTensorInfos.imag;real8.shape=$shape,imag8.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape87};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape87({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape87({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos4},acosh4=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh4},asin4=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin4},asinh4=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh4},atan5=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan5},atanh4=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh4};function pool5(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean7,variance}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean7,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean7.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concat17({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat17({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape87({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat17};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos6},cosh5=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh5};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div35=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div35},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf4=unaryKernelFunc(Erf,xi=>{let sign5=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign5*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf4};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p5=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p5},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool5(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad11),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal4=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal4},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round4},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu5=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu5},sigmoid7=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid7},sign4=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign4},sin5=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin5},sinh5=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh5},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus5=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt13},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step8},tan4=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan4},tanh6=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh6};function unique5(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique5},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad11=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad11)+line),maxLineLength=0;for(let i=0;i0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data2=this.readSync(t.dataId),decodedData=data2;if(t.dtype==="string")try{decodedData=data2.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer10=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer10.set(xBuf.get(...inLoc),...outLoc)}return buffer10.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax9&&(max9=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse11){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse11?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile7(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum28=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum28+=z*z}return sum28}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split8(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real7=complexVals.complexTensorInfos.real,imag7=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real7.dataId).values,imagVals=cpuBackend.data.get(imag7.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex8(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,realVals=backend3.data.get(real7.dataId).values,imagVals=backend3.data.get(imag7.dataId).values,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.data.get(complexInfo.dataId);return complex10.complexTensorInfos={real:backend3.makeTensorInfo(real7.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag7.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex8};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real5(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real7=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real7.dataId).values;return backend3.makeTensorInfo(real7.shape,real7.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real5};function cast47(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast47({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex8({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real5({inputs:{input:x},backend:backend3}),result=cast47({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast47};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast47({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast47({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex8({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add30=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add30};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil3=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil3},expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp11=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp11},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm13=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm13},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor5=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor5},logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log8=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log8};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax9&&(max9=value)}vals[i]=max9}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2},rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt4=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt4};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice18(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice18},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2},subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub33=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub33};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu5=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu5},preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu5(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu5},relu8=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu8},relu65=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu65};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu8({inputs:{x},backend:backend3});if(activation2==="elu")return elu5({inputs:{x},backend:backend3});if(activation2==="relu6")return relu65({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu5({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape86(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real7=xData.complexTensorInfos.real,imag7=xData.complexTensorInfos.imag;real7.shape=$shape,imag7.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape86};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape86({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape86({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos3},acosh3=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh3},asin3=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin3},asinh3=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh3},atan4=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan4},atanh3=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh3};function pool4(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean6,variance}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean6,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean6.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real5({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag5({inputs:{input:t},backend:backend3})),realConcated=concat16({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat16({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex8({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape86({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat16};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos5},cosh4=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh4};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}},divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div34=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div34},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf3=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf3};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},log1p4=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p4},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool4(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad10),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},reciprocal3=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal3},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3},scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu4=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu4},sigmoid6=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid6},sign3=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign3},sin4=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin4},sinh4=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh4},epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus4=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt12},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step7},tan3=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan3},tanh5=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh5};function unique4(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique4},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export2(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` +`),pad10=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad10)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function createStaticIndexBuffer(gl,data2){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer11}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max10=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max10+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer11,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`float v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` +`))}function createProgram(gl){return throwIfNull(gl,()=>gl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function createStaticIndexBuffer(gl,data2){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data2,gl.STATIC_DRAW)),buffer10}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max9=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max9+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer10,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports,AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - float result = ${operation211}; + float result = ${operation210}; setOutput(result); } - `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`vec4 v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` + `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - vec4 result = ${operation211}; + vec4 result = ${operation210}; setOutput(result); } `}},ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` @@ -71,7 +71,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } setOutput(float(bestIndex)); } - `}};function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i 0.0 || val < 0.0) ? false : val != 0.0; } @@ -91,7 +91,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version22="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(version19="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -116,7 +116,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version22,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:version19,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` int getFlatIndex(ivec3 coords) { return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; } @@ -1041,7 +1041,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1055,7 +1055,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1825,7 +1825,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(newValue); } } - `}},CumSumProgram=class{constructor(shape,exclusive,reverse12){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse12?`end != ${length-1}`:"end != 0",idxString=reverse12?"end + 1":"end - 1"):(condition=reverse12?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse12?"end + pow2":"end - pow2"),this.userCode=` + `}},CumSumProgram=class{constructor(shape,exclusive,reverse11){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse11?`end != ${length-1}`:"end != 0",idxString=reverse11?"end + 1":"end - 1"):(condition=reverse11?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse11?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${getCoordsDataType(rank)} coords = getOutputCoords(); @@ -2026,7 +2026,7 @@ return (round(mod(b, 2.0)) != 1) ? void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer11=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer11}function downloadFloat32MatrixFromBuffer(gl,buffer11,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer11,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer11,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer11,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer11,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer11,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` + }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data2,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data2 instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data2),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer10=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer10}function downloadFloat32MatrixFromBuffer(gl,buffer10,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer10,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data2){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data2,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer10,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer10,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer10,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer10,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` blockIndex = rc.y + ${col}; pos = rc.x + ${row}; @@ -3551,7 +3551,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getChannel(packedInput, ${coords2})); } - `}},{segment_util:segment_util2}=backend_util_exports,split10=kernel_impls_exports.split,tile9=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice21,shape,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice21,dtype,complexTensorInfos,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer11=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer11=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer11==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer11,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice21}=this.texData.get(dataId),key=slice21&&slice21.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile9(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse12){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse12),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse12),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min8,max10){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min8,max10);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split10(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex10(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real8},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag8},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex11.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex10},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` + `}},{segment_util:segment_util2}=backend_util_exports,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice20,shape,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice20,dtype,complexTensorInfos,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data2=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data2}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer10=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer10=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer10==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer10,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice20}=this.texData.get(dataId),key=slice20&&slice20.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data2=this.readSync(x.dataId),decodedData=data2.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile8(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse11){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse11),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse11),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min7,max9){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min7,max9);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex9(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real7},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag7},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex10.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex9},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` if (isnan(a)) return a; if (isnan(b)) return b; `,CHECK_NAN_SNIPPET_BINARY_PACKED=` @@ -3559,14 +3559,14 @@ return (round(mod(b, 2.0)) != 1) ? result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real8,imag8]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex10({inputs:{real:real8,imag:imag8},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real8),webglBackend.disposeIntermediateTensorInfo(imag8),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real7,imag7]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex9({inputs:{real:real7,imag:imag7},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real7),webglBackend.disposeIntermediateTensorInfo(imag7),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},ATAN2=CHECK_NAN_SNIPPET_BINARY+` return atan(a, b); `,ATAN2_PACKED=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+CHECK_NAN_SNIPPET_BINARY_PACKED+` return result; -`,atan25=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan25};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` +`,atan24=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan24};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -3589,7 +3589,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput((x - mean) * inv + offset); } - `}},batchNorm3=({inputs,backend:backend3,attrs})=>{let{x,mean:mean7,variance,offset,scale:scale2}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean7,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real7},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast49(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast49({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex10({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real7({inputs:{input:x},backend:backend3}),result=cast49({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast49},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i{let{x,mean:mean6,variance,offset,scale:scale2}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean6,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real6},TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast48},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;iidx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag7};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape89(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape89};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real7({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag7({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex10({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape89({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape89({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat18(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat18},COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel),res=channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag6};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape88(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape88};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape88({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape88({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat17(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat17},COS=CHECK_NAN_SNIPPET_UNARY+` return cos(x); -`,cos7=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos7},DIV=` +`,cos6=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos6},DIV=` if (a == b) { return 1.0; }; @@ -3659,7 +3659,7 @@ return a / b;`,DIV_PACKED=` } return result; -`,div36=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div36},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` +`,div35=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div35},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` const float exponentMultiplier = ${exponentMultiplierSnippet}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -3692,7 +3692,7 @@ return a / b;`,DIV_PACKED=` ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape89({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape89({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft7},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape88({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape88({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft6},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -3762,7 +3762,7 @@ return a / b;`,DIV_PACKED=` ${glsl.output} = result; } - `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft7},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` + `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft6},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` if (inIdx < 0 || inIdx >= ${inSize}) { return 0.0; } @@ -3815,7 +3815,7 @@ return a / b;`,DIV_PACKED=` } setOutput(sumValue); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend3){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape89({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape89({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` + `}};function transposeImpl2(x,perm,backend3){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TransposePackedProgram(x.shape,perm):new TransposeProgram(x.shape,perm);return backend3.runWebGLProgram(program,[x],x.dtype)}var maxConfig2={kernelName:Max,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape88({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape88({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` int start = ${start}; int end = ${end}; @@ -3935,7 +3935,7 @@ return a / b;`,DIV_PACKED=` float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` + `}},MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2},nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` vec3 fill = vec3(${fillValue.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { @@ -3954,19 +3954,19 @@ return a / b;`,DIV_PACKED=` } `}},rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend3,program=new RotateProgram(image3.shape,radians,fillValue,center),output=webglBackend.runWebGLProgram(program,[image3],image3.dtype);return output}},SIN=CHECK_NAN_SNIPPET_UNARY+` return sin(x); -`,sin6=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin6},SQUARE="return x * x;",square24=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square24},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan5=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan5},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape90},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape90({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape90({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast50(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast50},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat19(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse12?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum6},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill6},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean7,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean7.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max8(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max8},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min6},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad10(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad10,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu7(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu7},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast50({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse11(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape90({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse11,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid8},sinConfig3=createUnaryKernelConfig(Sin);function slice20(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d3(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d3(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d3(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d3(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice20},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax4(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax4};function split11(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice20({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split11},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape90({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice20({inputs:{x},attrs:{begin,size},backend:backend3});return reshape90({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape90({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum28},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer11=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer11,memoryOffset,size);case"int32":return new Int32Array(buffer11,memoryOffset,size);case"bool":return new Uint8Array(buffer11,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer11,dtype){switch(dtype){case"float32":return new Float32Array(buffer11);case"int32":return new Int32Array(buffer11);case"bool":return new Uint8Array(buffer11);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version11="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: +`,sin5=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin5},SQUARE="return x * x;",square23=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square23},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3},SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc},TAN="return tan(x);",tan4=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan4},transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3},wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape89},wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape89({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape89({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast49(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast49},wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat18(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse11?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum5},wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2},wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3},supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2),supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool"),expConfig2=createUnaryKernelConfig(Exp);function fill5(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill5},wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4),wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean6,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean6.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d},wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd},wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2},supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool"),supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool"),supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool"),logConfig2=createUnaryKernelConfig(Log),supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool"),wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max7(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max7},supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10),wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min5},supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11),supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12),negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc},wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4},wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2},supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool"),wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2},wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup26},supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14),wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu6},reluConfig2=createUnaryKernelConfig(Relu),relu6Config2=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast49({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2},wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape89({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse10,setupFunc:setup29},wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30},rsqrtConfig2=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd},wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32},wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid7(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid7},sinConfig3=createUnaryKernelConfig(Sin);function slice19(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d2(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice19},wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax3(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax3};function split10(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice19({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split10},sqrtConfig2=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape89({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice19({inputs:{x},attrs:{begin,size},backend:backend3});return reshape89({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape89({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum27(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum27},tanhConfig2=createUnaryKernelConfig(Tanh),wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2},kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data2=this.dataIdMap.get(dataId);this.wasm._free(data2.memoryOffset),this.wasm.tfjs.disposeData(data2.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer10=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer10,memoryOffset,size);case"int32":return new Int32Array(buffer10,memoryOffset,size);case"bool":return new Uint8Array(buffer10,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer10,dtype){switch(dtype){case"float32":return new Float32Array(buffer10);case"int32":return new Int32Array(buffer10);case"bool":return new Uint8Array(buffer10);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.7.0",exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config2){if(config2==null||typeof config2!="object")return;if(Array.isArray(config2))config2.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config2);for(let field of fields){let value=config2[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config2[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config2=identifier;if(config2.className==null||config2.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config2)}. 'className' and 'config' must set.`);let className=config2.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique7(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones8,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros9});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile11(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile11(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean7=0,stddev=1,dtype,seed){return randomNormal(shape,mean7,stddev,dtype,seed)}function dot5(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather7(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square25(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu7(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros9(){return new Zeros}function ones8(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add32,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d5,conv2d:()=>conv2d11,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d3,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot6,dropout:()=>dropout3,elu:()=>elu8,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum9,minimum:()=>minimum7,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu8,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape91,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax5,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable3=variableAndValue[0];variable3.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor168,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex),layer.inboundNodes.length===0)return[tensor168];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square25(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square25(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square25(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square25(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg20=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg20,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast51(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast51(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack9=[],marks=[];for(stack9.push(fetch3);stack9.length>0;){let top=stack9[stack9.length-1];if(visited.has(top.name)){stack9.pop();continue}let topIsMarked=marks[marks.length-1]===stack9.length-1;if(top.inputs.length===0||topIsMarked)stack9.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack9.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack9.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique7(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor168,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex,tensorIndex=tensor168.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor168.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version13}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather7(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range4(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor168=tensors[name];oldTensorIds.indexOf(tensor168.id)===-1&&tensorsToDispose.push(tensor168)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique7(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique7(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor168,i)=>{tensor168==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range4(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version13}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer11,specs){let name2Tensor=io_exports.decodeWeights(buffer11,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu7(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square25(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range4(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range4(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile11(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile11(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot5(mul(inputs,dpMask),this.kernel.read()):h=dot5(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot5(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones9(),rate),createMask=()=>inTrainPhase(droppedInputs,ones9,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot5(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot5(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range4(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast51(input2,"int32"));let output=gather7(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique7(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max9(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range4(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range4(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast51(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean7,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean7,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean7,variance,beta,gamma,epsilon3);return[normed,mean7,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range4(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean7.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean7,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range4(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range4(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range4(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean7,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable3,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable3.read(),updateDelta=origValue.sub(value).mul(decay);variable3.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean7,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique7(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean7,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor168 of additionalInputs)if(tensor168 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu8(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu8(args){return new PReLU(args)}function softmax5(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d5(args){return new Conv1D(args)}function conv2d11(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d3(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape91(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add32(args){return new Add10(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum9(args){return new Maximum3(args)}function minimum7(args){return new Minimum3(args)}function multiply3(args){return new Multiply7(args)}function dot6(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less7(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less7:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less7,this.monitorFunc===less7&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less7?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor168=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor168.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor168.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor168=resourceManager.getHashTableHandleByName(nodeName);if(tensor168!=null)return tensor168}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad11=getParamValue("pad",node,tensorMap,context);if(pad11==="explicit"){pad11=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad11[i*2],explicitPadding[i][1]=pad11[i*2+1];return explicitPadding}return pad11}function cloneTensor(tensor168){return tensor168.kept?tensor168:clone(tensor168)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor168.tensor.id))&&tensor168.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor168){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor168.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor168.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor168,keep(tensor168),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor168,0))}split(length,tensor168){if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor168.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to +2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config2.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config2.config);let returnObj=fromConfig(cls,config2.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config2.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique6(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now22=util_exports.now();return now22-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeConstraint(config2)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config2){return new MinMaxNorm(config2)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros8});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod4=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile10(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile10(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean6=0,stddev=1,dtype,seed){return randomNormal(shape,mean6,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square24(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu6(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config2={};return config2.className=className,config2.config={},deserializeInitializer(config2)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros8(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config2){return new VarianceScaling(config2)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add31,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d10,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu7,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum8,minimum:()=>minimum6,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu7,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape90,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax4,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor167,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex),layer.inboundNodes.length===0)return[tensor167];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log9=mul(div(1,this.seen),this.totals[key]);logs5[key]=log9,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config2,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square24(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square24(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log2(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log2(add2(1,clippedTrue));return mean(square24(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square24(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg19=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg19,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log2(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log2(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log2(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log2(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast50(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast50(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique6(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor167,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex,tensorIndex=tensor167.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor167.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version10}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config2.customObjects!=null?config2.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config2.name,layersFromConfig=config2.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config2.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config2.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data2){if(data2.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data2[0],ys:data2[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor167=tensors[name];oldTensorIds.indexOf(tensor167.id)===-1&&tensorsToDispose.push(tensor167)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data2,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data2!=null){let gotUnexpectedData=!1;if(isDataArray(data2)&&data2.length>0)gotUnexpectedData=!0;else if(isDataDict(data2)){for(let key in data2)if(data2.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data2}`)}return[]}if(data2==null)return names.map(name=>null);let arrays;if(isDataDict(data2)){data2=data2,arrays=[];for(let name of names){if(data2[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data2[name])}}else if(isDataArray(data2)){if(data2=data2,data2.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data2}`);arrays=data2}else{if(data2=data2,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data2.shape}`);arrays=[data2]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique6(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique6(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data2.shape)}.`);arrays=[data2]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor167,i)=>{tensor167==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data2=>{let lossValues=[],inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data2.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data2=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data2.slice(0,this.inputs.length),targets=data2.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config2)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version10}`,convertedBy:null},includeOptimizer=config2==null?!1:config2.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer10,specs){let name2Tensor=io_exports.decodeWeights(buffer10,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config2,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config2 instanceof Array){if(!(config2[0].className!=null)||config2[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config2}else util_exports.assert(config2.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config2.layers,delete config2.layers,extraModelConfig=config2;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config2){return new Sequential(config2)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config2){return Input(config2)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu6(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config2={};return config2.className="linear",config2.config={},deserializeActivation(config2)}if(typeof identifier=="string"){let config2={};return config2.className=identifier,config2.config={},deserializeActivation(config2)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square24(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config2){return new cls({l1:config2.l1,l2:config2.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config2,customObjects={}){return deserializeKerasObject(config2,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config2={className,config:{}};return deserializeRegularizer(config2)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config2={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config2={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config2=super.getConfig();return delete config2.rank,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config2=super.getConfig();return delete config2.dilationRate,config2}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config2){super(rank,config2);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config2.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config2.kernelInitializer!=null||config2.kernelRegularizer!=null||config2.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config2.padding!=null&&config2.padding!=="same"&&config2.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config2.padding)}`);this.depthMultiplier=config2.depthMultiplier==null?1:config2.depthMultiplier,this.depthwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config2.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config2.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config2.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config2.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config2.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.kernelInitializer,delete config2.kernelRegularizer,delete config2.kernelConstraint,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config2.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config2}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config2=super.getConfig();return delete config2.rank,delete config2.dataFormat,config2}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config2={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config2={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config2=super.getConfig();return config2.depthMultiplier=this.depthMultiplier,config2.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config2.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config2.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config2}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step8=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step8,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile10(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile10(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config2={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config2.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config2.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cellConfig=config2.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config2,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config2)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return new cls(config2)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config2){return config2.implmentation===0&&(config2.implementation=1),new cls(config2)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config2={cells:cellConfigs};return Object.assign({},baseConfig,config2)}static fromConfig(cls,config2,customObjects={}){let cells=[];for(let cellConfig of config2.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config2={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config2)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config2){return new cls(config2)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config2={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config2={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config2={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config2={n:this.n},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config2={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config2={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={maskValue:this.maskValue};return Object.assign(config2,baseConfig),config2}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast50(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config2={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique6(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max8(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config2={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={stddev:this.stddev};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config2={rate:this.rate};return Object.assign(config2,baseConfig),config2}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast50(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean6,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean6,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean6,variance,beta,gamma,epsilon3);return[normed,mean6,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean6.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean6,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean6,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean6,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config2={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique6(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean6,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config2={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config2={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config2={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config2={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config2,customObjects={}){let layerConfig=config2.layer,layer=deserialize(layerConfig,customObjects);delete config2.layer;let newConfig={layer};return Object.assign(newConfig,config2),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step8=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step8,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor167 of additionalInputs)if(tensor167 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config2={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config2,baseConfig),config2}static fromConfig(cls,config2){let rnnLayer=deserialize(config2.layer);if(delete config2.layer,config2.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config2;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu7(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu7(args){return new PReLU(args)}function softmax4(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d10(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape90(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add31(args){return new Add9(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum8(args){return new Maximum3(args)}function minimum6(args){return new Minimum3(args)}function multiply3(args){return new Multiply6(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config2){return new L1L2(config2)}function l12(config2){return l1(config2)}function l22(config2){return l2(config2)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater10:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater10:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor167=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data2=tensor167.dataSync();return inputParam.type==="number"?data2[0]:util_exports.toNestedArray(tensor167.shape,data2)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor167=resourceManager.getHashTableHandleByName(nodeName);if(tensor167!=null)return tensor167}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor167){return tensor167.kept?tensor167:clone(tensor167)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log2(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor167.tensor.id))&&tensor167.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor167){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, + because the value dtype is ${tensor167.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor167.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor167,keep(tensor167),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor167,0))}split(length,tensor167){if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor167.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=[];tidy(()=>{tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor168.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor168.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor168=>{(keepIds==null||!keepIds.has(tensor168.id))&&tensor168.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor168=>reshape(tensor168,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor168=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor168.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor168,elementShape)}pushBack(tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor168.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor168),this.tensors.push(tensor168)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168),this.tensors[elementIndex]=tensor168}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor168,elementShape,elementDtype){let dtype=tensor168.dtype;if(tensor168.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor168.shape}`);if(tensor168.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${elementDtype}`);let outputShape=tensor168.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor168);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor168,indices,elementShape,numElements){if(indices.length!==tensor168.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor168.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor168.dtype,numElements),tensors=unstack(tensor168,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split12(tensor168,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=[];tidy(()=>{tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor167.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor167.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor167=>{(keepIds==null||!keepIds.has(tensor167.id))&&tensor167.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor167=>reshape(tensor167,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor167=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor167.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor167,elementShape)}pushBack(tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor167.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor167),this.tensors.push(tensor167)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167),this.tensors[elementIndex]=tensor167}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor167,elementShape,elementDtype){let dtype=tensor167.dtype;if(tensor167.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor167.shape}`);if(tensor167.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${elementDtype}`);let outputShape=tensor167.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor167);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor167,indices,elementShape,numElements){if(indices.length!==tensor167.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor167.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor167.dtype,numElements),tensors=unstack(tensor167,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split11(tensor167,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor168=>tensor168.id),condValue=await condResult[0].data();condResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor168=>tensor168.id);origResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor168=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor168,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split12(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad11,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad11)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad11,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad11,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step9=getParamValue("step",node,tensorMap,context);return[range(start,stop,step9,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean7=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean7,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse12=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse12)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor168,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor168=>{let sameShape=util_exports.arraysEqual(tensor168.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor168).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor168:reshape(tensor168,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor168=getParamValue("tensor",node,tensorMap,context);return unstack(tensor168,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return split(tensor168,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor168=>tensor168.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor168=>tensor168.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor168=>{tensor168!=null&&(intermediateTensorConsumerCount[tensor168.id]=(intermediateTensorConsumerCount[tensor168.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor168=>{if(tensor168&&!tensorsToKeep.has(tensor168.id)){let count2=intermediateTensorConsumerCount[tensor168.id];count2===1?(tensor168.dispose(),delete intermediateTensorConsumerCount[tensor168.id]):count2!=null&&intermediateTensorConsumerCount[tensor168.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor168=>{tensor168&&!tensor168.isDisposed&&!keepIds.has(tensor168.id)&&tensor168.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor168,index)=>(map[this.inputs[index].name]=tensor168,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack9=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack9.length>0;){let promises=this.processStack(inputNodes,stack9,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack9,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack9.length>0;){let item=stack9.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack9,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor168=>tensor168.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor168=this._signature.inputs[inputName];result[tensor168.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor168=this._signature.outputs[name];return tensor168.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version17="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version19,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max10){return Math.floor(this.random()*max10)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor167=>tensor167.id),condValue=await condResult[0].data();condResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor167=>tensor167.id);origResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context);return data2.kept||(data2=cloneTensor(data2)),(await pred.data())[0]?[void 0,data2]:[data2,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data2=getTensor(inputName,tensorMap,context);return[cloneTensor(data2)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data2=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data2)]}case"Exit":{let data2=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data2)]}case"NextIteration":{let data2=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data2)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor167=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor167,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split11(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad10,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad10)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad10,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad10,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step8=getParamValue("step",node,tensorMap,context);return[range(start,stop,step8,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean6=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean6,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data22=getParamValue("x",node,tensorMap,context);return[cloneTensor(data22)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data2=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse11=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse11)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor167,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor167=>{let sameShape=util_exports.arraysEqual(tensor167.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor167).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor167:reshape(tensor167,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor167=getParamValue("tensor",node,tensorMap,context);return unstack(tensor167,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return split(tensor167,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}},executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data2=>[].concat(data2)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor167=>tensor167.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor167=>tensor167.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor167=>{tensor167!=null&&(intermediateTensorConsumerCount[tensor167.id]=(intermediateTensorConsumerCount[tensor167.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor167=>{if(tensor167&&!tensorsToKeep.has(tensor167.id)){let count2=intermediateTensorConsumerCount[tensor167.id];count2===1?(tensor167.dispose(),delete intermediateTensorConsumerCount[tensor167.id]):count2!=null&&intermediateTensorConsumerCount[tensor167.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor167=>{tensor167&&!tensor167.isDisposed&&!keepIds.has(tensor167.id)&&tensor167.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor167,index)=>(map[this.inputs[index].name]=tensor167,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack8=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack8.length>0;){let promises=this.processStack(inputNodes,stack8,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack8,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack8.length>0;){let item=stack8.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack8,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor167=>tensor167.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor167=this._signature.inputs[inputName];result[tensor167.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor167=this._signature.outputs[name];return tensor167.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config2){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config2){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version14="2.7.0",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version16,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule2(require_seedrandom6()),seedrandom3=__toModule2(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max9){return Math.floor(this.random()*max9)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset5){let base2=this,size;return this.size===Infinity||dataset5.size===Infinity?size=Infinity:this.size!=null&&dataset5.size!=null?size=this.size+dataset5.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset5.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let base2=this,random=seedrandom4.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];if(canTensorify(exampleRow)){let value=batchConcat(rows);return{value,recurse:!1}}return{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor4(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){let inputIterator=await this.input.iterator(),utf8Iterator=inputIterator.decodeUTF8(),lineIterator=utf8Iterator.split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice21=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice21)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version19="2.7.0",version21={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version9,"tfjs-backend-wasm":version11};var config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data2,i)=>freqData.set(data2,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data2=fileReader.result;if(data2 instanceof ArrayBuffer&&(data2=new Uint8Array(data2)),!(data2 instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data2)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice20=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice20)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version16="2.7.0",version18={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version8,"tfjs-backend-wasm":version9};var config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);setWebGLContext(2,gl);let ctx=new GPGPUContext(gl);registerBackend(config.name,()=>new MathBackendWebGL(ctx),config.priority);let kernels=getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};registerKernel(newKernelConfig)}),ENV.set("WEBGL_VERSION",2),ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding2=__toModule(require_embedding()),posenet=__toModule(require_posenet());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot2(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4685,7 +4685,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var version8="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tfjs_esm_exports,this.version=version8,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig){this.state="load";let timeStamp=now2();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};return human_exports;})(); +2Q==`;var version11="0.9.18",now2=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tfjs_esm_exports,this.version=version11,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile2.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=engine15().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input2){if(!this.checkSanity)return null;if(!input2)return"input is not defined";if(ENV.flags.IS_NODE&&!(input2 instanceof Tensor))return"input must be a tensor";try{getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding22){return this.config.face.embedding.enabled?embedding2.simmilarity(embedding1,embedding22):0}async load(userConfig){this.state="load";let timeStamp=now2();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${version6}`),await this.checkBackend(!0),ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding2.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding2.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now2()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||getBackend()!==this.config.backend){let timeStamp=now2();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),setWasmPaths(this.config.wasmPath);let simd=await env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await setBackend(this.config.backend),enableProdMode(),getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await backend2().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await ready(),this.perf.backend=Math.trunc(now2()-timeStamp)}}async detectFace(input2){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now2();let faces=await this.models.facemesh.estimateFaces(input2,this.config);this.perf.face=Math.trunc(now2()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now2(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now2()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now2(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now2()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now2(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding2.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now2(),embeddingRes=this.config.face.embedding.enabled?await embedding2.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now2()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input2,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input2,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input2,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input2);error&&(log(error,input2),resolve({error}));let poseRes,handRes,faceRes,timeStart=now2();await this.checkBackend(),await this.load(),this.config.scoped&&engine15().startScope(),this.analyze("Start Scope:"),timeStamp=now2();let process3=image2.process(input2,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now2()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now2(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now2()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now2(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now2()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now2(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now2()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&engine15().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now2(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now2()-timeStamp)),this.perf.total=Math.trunc(now2()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now2(),warmup=await this.detect(bitmap,config_exports),t1=now2();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}};return human_exports;})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.js.map b/dist/human.js.map index e628f429..7eaa9fc8 100644 --- a/dist/human.js.map +++ b/dist/human.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js"], - "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk\nJyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX/2wBDAQwNDREPESESEiFFLicuRUVFRUVF\nRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX/wAARCASwBLADASIA\nAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAEDAgQFBgf/xABDEAEAAgECBAMECQIDBgUFAQAA\nAQIDBBEFEiExE0FRBiJhcRQjMkJSgZGhsWLBJDNyFSVTY3OSNEPR4fAHFjWCokT/xAAYAQEAAwEA\nAAAAAAAAAAAAAAAAAQIDBP/EACARAQEBAQADAQEBAQEBAAAAAAABAhEDITFBEjJRIhP/2gAMAwEA\nAhEDEQA/APqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAKNTq8OkxzfNkisQC8eb1XtRNbzXT4q7eU2nu0MntRq/D8StMccvW29ZmdvgjsTyvZjxOLj\n+s8WLxn8TFPXs6Oj9oct7c14rkxz22nrB2I49KOdTjelmszfmpMeUxv/AA28OqwZ4icWWtt/SUi4\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmdo3nsPNe0Pt\nFh09Z0+DNWL7+9O/7A3eJcZppsV5raI27esvH6jX5ddM25p79Ilo59VbUZOe2Tm/PeGvfPfT2iKR\nPLv1+DO678XmW/a97U6TtOyzTbTF538/T9WjTNecm9a7126tqk3rSYxY5ta1plRZqZNXGjyZcPXl\nmZmsx+qjBrsuO16xM7eXRt04JrdTltk5OWJnfaWf0a2lty5MdZnfzSn+WOHiOutFpjHa9e8bQ2fp\n+alYy462pk7zXbuxjPesbRS0f6ZZV1ET1tErzXFLHo+A+1ddZf6NrI8PJHa1vN6iJi0bxMTHwfOa\nzhzd61v1846utwniM6DUdb3nBaNrVmd9vjC/ZVePYirBqMWppz4rxaPgtEAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAItaK1m09ojcHnvarjM8P0vh49+a/eY8ng9D\nh1fGM1rxjtGPfvbzdbjuTJxHX48cTPNltM/KsS9Dw7S49Jp6UpHaGe2vjz1y9J7LYK13vHWe7bj2\nex1tvM80ekuxW3RnW3Vm6P5jRx8H0+OYmMcb+bapo8GKPdpC6bQwtdHU8JpWkdJ/JweL6e23iU67\nd4dubSqyVi9Zi0bwIs68XGp36TtEq7ZJmZmevzdbifCKWtbJinkt6eTgZPFw32t+sRurbWVzxs1y\nRv6T8V1NZNPtfq0seTm+Kevr+SZuxXjvaPiV8N4viycto9HseG6+uu08W6Rkj7UPmFck1tE1nlmP\nLd3eA8V8HVVi1pjq6Ma/pnqce/ERMTETHaUrKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAADW19+TQ5p/p2bLS4v04Zmt5VjeQeJ4bjnLqsupv+Ka1+ERLv4reTmcNxcuC\nvy3l0qdI2hlr66sT02ot0ZV7qqrInruzrVZLGSZ37JjqgYTG0K5lbaFVhDT1Ub456RPweY4hixWi\neSdpjvD1eWejz3FNHWYtkpvFo9EIseb3tS3SerOms22rfpPqZKzvvHSYUz70TExG6Gdbs2rljeJ/\nMx5L0vEzPaelnOi98c9J2bFNTFpit47+a+PVUvx9T9nOIfT+GV5p3yY/ds67wvsXqpxau+G09Lx+\nr3TqrEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV4ljnLw3U0jvO\nO0fs2lWqyUw6XLkyfYrWZkHldBEV09eveG3Fq1mI3jd4vPrOIaid8G9MP3Y38k6fNrt/rMk9Ou8s\ntfXXn49rGWInuy8SO/k5Gl1E3rG/fzbOe94wTy99mbRvTrMOOvNfJWsesywniukrG/jU6fF43WYN\nTmtEeJtEQ06aSmK2+bNtEd+qfSO17unF9Hmvy1y13XWyVmN4tExLxVK8PmNq5NrT58zawam+m/yc\n0Xj8NpRYSvQZ7xEOdqI3rPozxayNRXe0ct/ON03jmrKB5nV4q1yTO20Obmv4c+cx8HoeI6WZpNoj\nq83niYmYscU0r8aJ6T1n49zeJ+Meqm1drb9J+Kd5p136StGVem9l9TbHxLDFp7W7+sS+q1nesT6w\n+PcAzVjiGHftzQ+v4f8AJpv6On8jH9ZgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAABp8VrW/C9TW0ztOO3b5Nxp8VmI4bn37TWYB8f1HFtTfUfR9FWJmsdZ9I7MtJxDX5s\nd8ta1y0xzteaR2277rcuhycP12SceLxMeWNpjttHwlu8I0mfQ1y+D7k5YmJmY36T36Ka43z/AF1t\ncI1ds+qxVj7/AEej19PCw9HJ4NoK4OIU5Y35YmZdzVTGebVZabx5jJS+Tmns81rNLm1Wrzc9rVw4\nYibbem72mXTTS0w0M3BvEta1bWrM95ie5EanY87wXgNOL6XPfxraXLhra/W28bR/dzYzarBqJxRe\nbzE7Rt5vWU9n8mPHOGmS0Ypnea1naJb+k9ncNLR7u2y/WcxXO4TOoyUrN6zD0FaW5Y3hu49FiwUi\nKxCvLMR0hlW0jn6ukWw3iXjOJzbDlneOj3GaN6zDzfFOH+LE7SRGo83XNSZ2lbG2/WfdlvaT2cy6\nrNFInlrv1mfJ37cK4PwTTxOoidRm2+/2/KFuyMp47XB4LivXiunrH2b2iH2qn2K/J8x4fGDNxTSZ\n9Nh8OviRvTyfT6xtWI+DeXs9MNZubypASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAOZx6/LoOWPvWiHTcf2hiZ0e8fc2mf1E5+vP/AEeuSd7RC2uKtI6QjHfeINTfwtPf\nJvty9WPfbt/lucP03gxfJf7d/wBoReYpm97zaNeLb4Ims9Nt94auDjem1Wo5PFi1onylS+1o7l8V\nbxvtupjDMdNkYtXS1+Stt+m63xImEJ4xjHER2ZxMUjeUTO3VRmydBbjLJqPi08mbeVOXJPq1sl5Q\nVbkz9+rRy35rxHqzmZlVEe/Ez5LRlW5iyfR6zffaIjq1OSNZps2a21rZInafSPJhxGMl9LStLRWM\nlorM/A4dkrWbYfLZC2W/7K6eubX6b4RzT+W76K8b7G6X62cu3Sten59nsm3j+OXz3/0ANGIAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0OIYfpOHPijvNNo+fdvtXJO18k/\n/OwPFYbz2ls3jx8VqW6xMdWPEdP9D4lkx/dt79flLLHbkxTPwY6nt2512ORTRzE2x4/dpE7cvkme\nE4IrW3hRMxO8THRtU1FKWtvtvK2upx22rzRCtXkqzh2jtF7ZbT122b01ndnpuWuP3Z3+Ky20qDVv\nfauzVy3mejZzNK8dVjqi87KLRLYtXruqvXzkQp7Qoid88R6rcl+WGlW0/Sa22mfhCZOq2x082ix6\njkm822pO8VrPdr4dNObVeDo8XW3uzMbzK+mvxT7szE27cvnu9j7PcNjSaXx8mOIzZevbrEeic5tN\n+SZnpt8J4fHD9HXHO3PPW0x/DeBtJxx29vaAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAKNRim9Z5e89Nl4DzXtVh5babURHrSf7f3ec1+qnDorWrvvt5Pccb0n0zhmWk\nRvevv1+cPE2rGTFNZU26PFfxwa5dVkjelI2772nZnX6bbrEUq3o0d678u8wmuDL2ittvVjXdneeK\ncGv4jpJ6U56+kS7+j118+GLXpakzHaWlp9NNY3tv+bbiYiNoQy1y30uyZJlrWmZnuym6q1iIJnop\nyW2Te8bdWnnypQqzZOadokiIpSZntWN5lrxki19vNRxrUeBwnNNd+fJEY6/OejXLn3Xe/wDp9wyn\nE8uo4lqqxblv7lJ26T6vpD5X7G8QycKzeBMbzMRM1/FH/wA/h9QwZ6ajDXLitvWzRgsAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeL45w+dDrZvWv1OWd4+E+j2jX\n12jx67TWw5Y6T2nzifU+rZ1y9eHwzDYxxEy18+DJodXfT5o96vafWPVbjyxDn1OOzHudbM0rt2UW\niI69mVtRXZq5tREb9VUoy2iIlRbJ0UX1VZ6btTLrI7V6yk62M2oisT1c7JmtkttVMUyZp6x0beDS\nRWOvdKijDimvWd3G9pNRMfRcNfvZOb9Hpb0itJeP47k/3hgjaZnbaP1XxWW3T0movbNS0W645nbf\n0nrMPpXs3xamoxdJiLbe/X1n8Uf3fKsOTw4jbaXo+EarJhtGTHMxeJ6xH7Sti9Zaj6x3HM4NxXFx\nDS1mtoi8dJrv2l011QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAGjxLhODieOIye7kr9m8d4eM4to9RwjPXFa0ZIvG9bR0fQXmPbDFvTTZPOJmEWS/V8bs9R43NxLL\nG8eFbePg1bajU5/s0l1ceKLx1hbjwRE9mOpx0y2uRTSZsm3PMw2aaKtIjo6kYo9EXpET0hVLXxYK\nxC6MZvyx1lFs0RHfaPiCnU12pLyHGNDbUajBekWma2npWN3p8+opa20e9LSyZLxExTlpM+vdOdcZ\na9tPS8MyUvFrzWlI6727u1pYxYrbVmb7x+TQx6au3Nqcl7/0rcmW9axGnwZJj1novmxnZXV0fFp4\nZxLBPgTGK8xzXr5fOH0bFlpmxVyY7Rato3iYfNuG2x56Wrqa8s2jz+7Lu8O12bS6jkwzN6THNNI6\ntvrN68Y4rxlx1vHa0bskAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAA4XtTTm0OKfTJ/aXdcL2pyRGjwU362yb7fkJz9eTxxyZJjyltRXzUZK7TFtl9Lbwy06YzrHwa+\nfJFd/wCVt8m0bQ0eS2qzcm+1K/an+zNZFL5M1pjFXeI72ky48eGnPkvNp27+TPU6nHpMfLXaIjpE\nerk5dRMxOfN1mPeisfshW1ne1a1577Y6x5R3U0zze31FOWI6ze0byU098kRlzbxM9qrMlPDpyRMR\nMd5Vt/Ihp5898mWZm1pjftE91uCt7fCI7dWeHDEW3t723l6rslqxWZnasR+SYhFbzhnfxJ2jyeq9\nlcGXWZcmW0zWKxHLaI7794eJx5fpfEKabT8t8l5isddo3l9S4VjrwrRUwzSJt3tav3pdOL6Y6dXD\nj8HFWm+/KsU4NRXPvtWazHquWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAa+fXYNP9u8b+kdZBsDkZOO135cWOZn4y5Wu4xqctbe9y19Kp4njt6vi+PDm8DFMWybbzPlV\n5PiGtz67UxbNbeKTtWIjaIXYpnwuaftT5tXJT3vmi1pMsrU5qIrG1V1a+5DCa7b9GFbRr5J6Wnbt\nCu+Wmk0m8956z8ZWZNorbfzcbX5rZslazPux3hUt41NTntktObJ13+zX1bek01r4/HzVm0bxPXy/\n+bNfDgjVa2uOY92kdfg6ufJOKvLXtttVVSqbcta2vM7zXtHpLQy5ZtMd+vWd+7Zy3mdJHXra3f0c\nvUarw7zFY5rT2hH1Lavnrgx81p3U49Pk4nE5L35MO/StfNRXR5tXnrS8W67WvfyiPSPi7uLHFK1p\njrtSsbR5Lc4RzsXBaYreP4l45esRD2HD9fnw6evvWvO3Tfr0aGk0U55ra0TFInv6uzgrXFXlx0i0\n77RPlC83Yj+JW7oddqr6vHzTTw9/f6dod+L1t9m0T8pcbFSmPHER3892W0zPuz+jSbVvidkcqmfP\nSel7bekrI4n4dZnPWIrHeYnZee2Wpy8dEaml4npNZblw5qzb8M9JbYgAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAABEzFYmZnaI7yCXL1XGa0jJXT0571nbee27DiXEprp8nhbxG20W8\n5cbD0ikfnKO+urTPvjoZdXqctdsmTaPSvRpWmsdZ6yztfaGplvv3lWW1tyRlz1x0vkn7Vo5atTNe\nY0+1o79V2KsZsvX7Ne5mwxnyTNvsx2iGneM/rCdRSuOsTasTt5kRFtpjqmOH4t4nk7estiMNa97R\nHwhna0iuKTEdmGWa4672nZtRele1N59Zlq6vLOSsYorEc07qcW65euzRvtXvPZy52naZ7ujr6fXV\nrWdukREK8+njHgmZmPc67bq6ivVWhxxgxZLztNrT1mZ/SP4VZs0zaOvfp84WUtNsXLvtv3699+rU\nz7+Jtt5qURqMnPpctaR1rMSw4ZoK57eNk6xHaJRh97Ltt7lo5Z+L1HAPZvVauZ2nFTSzMTzeJEz8\nto6xPfvsZntPZ9rXxabmxzefdrv0j1dXh/BcmstW1qxTHHasR3+b0GPhGl+kWmd64dNEVjf73T7X\ny8vy+Ddx6O3iRakxTH5RXrMw1/lX+3Itw2MFIraN48qRHdZi0cUjmmPen9noox1iO0fNzdXEYrTt\nstcmd9aX0bJ+HePmiKTitO8TMLZ1cVjrMfqpz6ys4pjfrPRWZ9rXXptUit6zO+23VyaRHEc05L1/\nw9J9ys/en1ljqdVbwYw452tlnl3jyjzbmmiMeKtYjpEbLeTXPUU8ee/+qjJpsV5rbkrFqzE1tEbT\nDpYNbW21Mnu29fKWna0KbqTdjXXjld0cvQ63ltGHNPSfs2n+HUbS9c2s2UASqAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAOVxPWe99HpP8ArmP4b+r1EabT3yT3iOkesvMVtN7za07zad5l\nXV5GmM9vVfEstvDx0jtaVVMlq+UJ18b5cMRvPeSuK87bUt+i2Z3PtG7zXpjkzXt6R+TXyTMzvM7t\nydHqZ+zhv1+Cv/ZuqvPTHMfOYaTMil1a1K2vHSLTELq2v+KWzThGo84rH5rq8JzedqR+ZeI7WnOS\n34pYTafWXR/2Pln/AMyrKOCWnvmiPyR6O1y9585lhWJvl557Q6eo4T4dYiMvW3b3UanhldHpJtGX\ne09unmjsT7eb1l4trI2t0hsZfrdNO0bzy+nzU20/+NmkzO9esz+TZxWis9dttvPv+Tn21jjaW8zn\n26bTG3mp1M/Wzv3t0jyWXiKZJmsTERaZhXXDbNl8WaztWenxZLstPp5pau8frDtVrNMM5cfTfpMf\n3aunxxbes9d/R09Dp8ebJi09ptFr3jtt2WyrW9wy1Jx132mK+Xq9PotT0iIU19ntLtExa3T47T+q\n6nBaYvsZstZ+cT/LeMnUi0TXffo1s2m8Ws2/OIMWk5Jib5L328rS2t94Sh5TV4ppklpW6PT6rh+P\nNbebTHyas8E081mZy5P2W6OFhjxNTE/hr/LoRO0Kvo9dPqctKzMxEx1la5t3tdnjnMs4noievcrO\nyZjeFF1OSnNV0OG62cn1GWffj7Mz5w05joovzY7xes7TE7w0xrjPeex6Ua+j1UarBFu1o6Wj0lsN\n3JfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACrU5o0+nvlt92P3BxuM6nxNRGCs+7Tv8\n2hToxm1r3m9utrTvMsonqyt7XTmcja0u3O6FMfi5t/u0/lzdJM81p9O3zdvHTwsUR5+bfPqOfX1h\ndqV+3O7bs1+T31oqmI3TEM4rvCdkDGIIhlFd2daboS0NXG2bD6bufxXU1vlmu/u4us/N0+L1tTSx\nkr9qk7w89j1FNZMV3jxLzvaJ8mer+LSOZqK2xZotbvljfr/89U453rXt9lse081xZtNjx7TGKu0t\nDHlrevSevaN5Y6+tJ8c7VRNMt63n3ub+6/R54rERMztDYy4a5omclYmfxKcenrjtHLvtPrCnVmdb\neFe3JXmjy6eS/DrMuLVYsta9Mdt++6qLxO+0dEc8UmInr18iUfReHcXrqccb9Z27Q61Lb13eJ9nc\n1Z35rTvE9avY4bTkpG8xEfB05vYxqybc07R281naGMREdoT5JQqy9mply7Q3bV3iXG1eXw7TWSka\nc258t7+tpT5/BjT7MfHqndz12Z+M4lMMKyziUJJiN1WSu9fku23RaOgKNJqbaTU1t9yelo+D0cTE\nxEx1iXmM1Nt3W4PqvFweDaffx9vjDbGvxz+TP66QDRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAOJxzU73rp6z296zsZMkYsdr2naKxvLyObNOfNfJbvad1dXkaeOdpvsc2yuZVzfbfqybutwu\ns5s8R92J3dvJb3tnO4HSMegtmt3nfZvYp8SZl0z45NfSK7onH1bNcfRFqnUKJr0Y7dVtq7prjEsK\n0XVpEM6028mW20IHK41aPo3J6zs4ODhdcvPnvExFevNXpMOrxi/PlrTee7PLX6Pwa09uaNlKtHg9\ndM3z5d7ReOu02nu0JzZMfblrv5R5uvrcdImZ26T1mYhxs1Os7RH93PZ7axuafNfLitvbaYU3yZYt\nPXs9NwHhui1HBa5LVicsb81onrEuVqNNSuS8Y67dZ6xPZa59Il9uX41vEitImZme3q2Kxbxora0T\nMd/ROSa4Ztkj7c9OafL5LuGYubmyX3iu/TfbdSfVnpvZLT/XZK233+Mbbva1xRXyiPk8pwbH4N6T\nadq5a71n0tD1WDL4tPe6Xr0tDpz8YVnJHWEXYxbqlBedoef4tW0XraO09HdyztSZcbUz43C+ee9b\nSVMaeOfqq7+jGckQ1Yz7+7v2RN/WXPXZPjci2+2yyJaVMuy+uSJlA2d+pNoVRbeDcSxyTE+TDDlt\npdRXLTynrHrDOyiyZeVFnY9TjvXJjres71tG8MnJ4Nqt4tp7T1jrV1nRL1x2cvABKAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAHJ49qfD09cNZ97JPX5PPw2uI6j6Vrsl/ux7tfk1mWr7dOM8iLdm\nvfebREefRsWldw7SxqNbWbR7lPesrn3Vteo7dYjDpMGCvfbeXQ0uLlxRLRxROfUc34p6fCHYrXlr\nEejqrjY8uzCYW7MZjdVKqK9VlaxCYrsnYExBMRMJRPZA8/xPHtmpP9W2xx76vhWOInvt/C7ike7N\nvwzE9kcapGfhlevTaFbFo8RqJ5vy8/RoW09ek0msxHfp3dzNoLzp4zUmZpMbT8HJyYJi20X2n0lh\nZY1li/RaidBF4w2mK3jrHaFGp1lN+tptPp5IjBkid5mIp16TKu0abBPv33vPlM7z+iPdFNcWXU5I\ntkrNce/b1W5db1nTaf3ax9q0fxDW1ebNk2phty1mOu09VOm8W19orEz23j1TwfSeERFuEYMddptW\nd43dvBn21eKJ75KbW+cf/JcTgMxXTb3nbljz+TpcPmc2uyZO1KRtVtGVdi0bx07qJnllsRO6rNTe\nN4XVamsy8mnvPwc3R2jPwe8TPbdlxXNOPSZfhWWpwO85OFzv57qrODkzeHntSe8Sn6Rv0a3EZ218\n8nXekfr1a0ZLVnqx19dWb6demXybOO7lYMvNMdW9S/VVLo0us7tPHdtUtEwJiZU3jq2Jhham8CVG\nPNODNTJXvWd3qcWSubFXJWd4tG8PK3pPd1OB6veLaa89Y61/u2xfxh5c/rsgNHOAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAANLimq+i6O0xPv392rdeZ4rq/pOqnlnelOkIt5F8Z7Wj27I2I6sb25YY\nV1ImY3dbQ08LRc23vZp2j5OJG+XJWle9p2h6HHtbJXFT7OOIpX+7TxT31j5rycdTh+Dpz+XaG/sw\nw18PHWseULN2trBE9UcrJKBhFU7JAQi0dEomegNDUYovM7x3jb5tO1ZvpbaTLtzRExWfWPJ08kbT\nEx5NXWYYyV5omYtHWJieyeDzuizfRs19Jn6TM7Ru1uMcJxZqTkw+5f4ebqa7SV1MR4tdrx2vEfy1\naxqsNOTLjnLXytVXi3Xj8+nmsxTLM16d5npPyUzpekTtSK+U7vS6vQ/SYmK1vWPS1HOn2dvvvvE/\ntDO5XlcO+LbfHSd/W3o6/BdDOXPTnj3Kz38rS6Wm4FNrRyRzTH3p6RH/AKvR8L4dXSzE3jmtHn5I\nmbfqLV+m4dbLSsZInHjr3iI6zLpYaxS01rHuxHRHiT9mv6s67Vj1aqL6326MrWiYa+/Q54BxPaGe\nXRZpj8MquB4+Xg8zPnB7SX30to379GxpK1xcHiKz5IS8xr8PLPixH2bftLTy05o6dHYyVjLhy0t1\nizjZa3pMVv3iO/qz1G2L+NbSajbNyW7xLsY8kTDz+fJXFqKZN4iZnafi6WHL0iYlStI7OO+7axW2\ncrFl7dW9jvE9ULN+J3ZbdFGOy+AYWpEqN7afNXLj+1Wd23KrJVMvCzseh0+auow1yU7WhY4fCdV4\nOadPefcvPuz6S7jol649Tl4AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV581NPhtkvO0R+4NPi2\nr8DB4dJ9+/7Q83Po2NTqLanNbLfvPaPSFDHV66sZ5ET0hRknyW2lTtMyouz0c8usx2n7s7vScKwx\nzc1vu/y85p+maJh6Th+SOWeveXR4/wDLm8v+nX5mUWa9bbrInolmu5jdTNkxYFk2Isr3TuCzeGMz\n+THdEyDDJO9Ja823rt2XWnya946pGvktDXta0ztWu/ybvLE9dkcoOf4GbJPWK1j49VmLh9JtE33v\nMevb9G7WsW8l1ccREISophiJ2jpDYpijbaOjOuOJ8ujOdqxsgVcsUjaETYvbaFFrgu5lVsm0yUtu\nryg43H5m+GIj1XcJzePoL4pnrWGtxmfchr8JvfHS1622if3QljzTTLes+qrNjrkiYtCzPMxnm095\nYZJ6boS5teB49Tqscza97VtvWvlv8V/FOF34RrIxTM2xXjelp/eHoeA6XnzReY3ivX/0dfivDcfE\n9HbDbaLx1pb0lOs+jO7K8Lis3cN+0NKcd9PmthzV5clJ2mF9J9GHHVL108dm1SznYr/Ft0tuhLb8\nmNohFbMhLWy0mJ3rPXvDvcO1karBG8/WV6Wj+7kWrvDDBlvpdRGSnbzj1hpjX4z8mOx6UYYstc2O\nuSk71tG7Ns5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeXneJ62dVl5KT9VTt8Z9W9xbWclPo+O\nfft9qfSHEU1pv48ftYST23ZTDC/p0YtlVuvVjMbM5+LCZjYGWGdrTPxiHY4ffaf3cjTxz1v6xMS6\nOlty2iXVj/Dk8n+ndrkhnGRo1v8AFdW3RCrZ5uiYsqrboncSu508yjmZRYQt50TfowYTbYGVrKrT\nuTZjvukQnYhMIGVY2ZxPVWyrHVCWzXpVXkt3TE7Va+W4K7X3jv1auTNy3jdba0RZpamfroQN7Hk3\n6wr1GTaN2OOJiu6Mu98NvgDi8Wy74d/yZ8PiPAiO2zU4nb6qIn1bugjfFE/ASp1ke9u15mbbRDZ1\nMb823kx0Ontn1OOkedoJCvT8I03gaKsz9q/WW+isRWsVjtHRKyrhe0XCfpWL6Vgr9fjjrEfeh5fF\nfeH0V5Dj3DPoOo+k4a/U5J6xH3ZZ7z3228evytOk7NvFbo0cdols47bSybt7HbddHVqUs2aW3Qnq\nxVeu8LILR3SlZw3V/R8nhXn6u0/pLuPMXjeHT4Zruf6jLPvR9mZ8/g1xrvpz+TH7HUAaMAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAABRq9VXSYJyW79qx6yvmdo3l5viGs+maqYrO+OnSvx+KLeLZz2te1rZL2v\ned7WneZYWnZl5K72YV1xEyxmeqJljzIEWlVkszvbZp5soN3h2SJz3pP3odCnuWmPRxuERfJrZmtZ\nmtY96fR28kbX3dXj/wAuTyf6bmK+9YX1s0cNtm3Sd4LFY2K23W1s16StiUJW7bp22RW3RluBuruz\nmWEgrmCGWyNkoExKE1QlPmsqRDKeyBjaejWy2W3ttDUyz1QKslvehVqKTNosyyTvELabXptIJpaP\nB39Ia2mz+JGpr51jdZefDx2hzuHZObNq58poJaGtjxJ2+LoaKP8ADRPo5+T3skx5OhpOmC0fBNQ0\n5yTbn+bt8A0u9raiY6RHLVwY62mI6zMvaaHBGn0mPHt1iN5+aYVsACBXqMFNTgviyxvW0bSsAeE1\nmkvw7V2w5Ote9besJx2er4rw2nEdNNekZa9aW9JeQjnxZLYskTW9Z2mJY7zz26fHrrdpbZsY7NGt\nmxjvso1b9NmUwpx33XRO4K7VUTE1nmrvEx1bVo2VWiJE/XY4frY1WPlt0y17x6/FuPM0m+HJGTHO\n1qu9pNVXVYt46Xj7VfRtnXXL5MfzexsALsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHM4jxOMFJphmJv529Dq\nZLfjDjPEIx450+K3v2+1MeUOHSOWFc3nJkmZnf4yujpVlqunOeFpV2nctLCZUXRM7MJtsWlRkv3Q\nky5NmpWt9RnrixVm17TtEQnJabXisRMzPSIew9n+CRoccajURvqLx5/chfOest642OGcIpoOG2w7\nROW9d72+LQvXevyejcPUU5M+SvpLeOataraw2a0dLbLqTtK1G3Es4lVWWUSoldFtmcXUbpidgXzK\nGEW3TuCUSncnsDFMMLSms9EC6J6FpVzbZE5ALy0809ZbFr9GtfrEoFMzuuwz0Ueey3HbaBLDXe7i\ntMOfwWnP9I+NZbuttvhs1uBRtXPb4SDm3iIvf57N7Dbl0VrS5+XrltEd+Z1Jx7cNms9N4TURRw3T\n+PrcO3WszEvZOD7P6aYiMlvu16S7y1QAIAABxOPcLnUY/pWCv1tI96I+9DtgmXl68Biy7/NtUu3+\nO8HnFa2s0tfd75KR5fFyMWTdhrPHVnX9R0cd21S3Rzsdm1iuqs256wrmGcT0RYSx5d047X02SMmO\nesd49YRE9WcdSXhZ2O1p89NRji9J+cei1xMc3wXi+KZj1j1dTTaqmor06WjvWW+ddcu8XK8BZmAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAMMmWmKu952UZ9XFZmuP3revlDTtzWnmvO8q3XGmfHb9ZanV3yxtWeWn7y4es\nvPNtDqZJ6Ts5mppvdl/XXRMyfGvSNlu/RVvtOzLfoipLT1VTKbSpvfogRkvtDVyZOhkyvQcA4Dzz\nXV6yvTvTHMfvK+c9U3rkW+zvA/D21urr789cdZ8vi9KDb45rejl8Rry6iJ/FV1HP4vXbBTJEfYt1\n+UpiHM295bXsqrO9l8QkZ0lZEqqLeyBZHZLGvZkhIndADKJ3TMoqWQMZ6pjsxll2jsCLSrmU2lFY\n36gieyu0LJk3jbsga0wdqzK20QpyztQGprL/AFMrOE05NLkt6qdVWZxNrSe5o9vWBLiUjnzXn0vL\nq555dHt8HOwV928/1z/LpzXxbYccRvzTB+jucOwxh0dI22mY3ltIrHLWIjyjZKyoAAAAACJiJjaY\n3iXleM8InR5J1GniZw2n3oj7s/8Ao9Wi9a3rNbRE1mNpifNFnVs65XhcWTdt47bnFuF24dm8TFEz\np7T0/pn0a+HJux1OOrOux08d1ndqY7tillVkzExLOk7yd4YxGwluViJhE45raL0na0dtlWO0+bZr\n1TKi+2zptZGTamT3b/tLacvJjiY3XaTWdYxZZ6/dtPm1zrv1z78fPcbwC7EAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhkyV\nxUm152iAZWtFazNp2iGhm1Vss8uP3aevnKrNntqLdelI7VRHRnrX/HRjx/tZREVjZXeybW6KbWZt\npCZ6S08tN7Nmbb7zCrJtyoS5145bSx5mWafelr3tsKmS/o08uXyhlly7RPV2+AcBnPNdZrK+53pS\nfP4ytnPVda4y4BwHxOXV6uvu96Unz+MvVxG0bQRG0bR2G0nHLb2gCUDX12LxtFmpHeazt82wT1gH\nmMN4tWs+rcr2aEV8DU5sM/cvO3yb+O0csLUTSdrLphRE8tlkZI7Atr2ZMazDJVKTYSCawi7Ksq7z\n1QERvLK3ZGPrKbyCrbdnMcsbeaa18/RhvvM7oGEwTG0JmYYTIML22a2e28xELM19oURPNO4lOem+\nn3ZY5+prVnMc2GYU4/L4A0a15cNf6rz/AC6fC6+NxCPOuOu/5tHJTbHj+F5/l1+BYumXJMd9o3/d\nMRXYASgAAAAAAABhlxUz4rY8lYtS0bTEvH8R4ffhmo6bzhtPu29Pg9mq1Gnx6rDbFmrzVsizq2df\nzXkMWTeIbNL7tbXaHLwzUctvexWn3bmPL8WFnHVL326VZ91MfFVjvvVlz79kLrcf2m7j7bNHH3bl\nJ2SirLQoy4t1++7G0dBC/RanxI8PJPv18/WG241+alovSdrV6w6mDNGfFF4/OPSW2b1zeTPL1aAs\nzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAVZ9RXBTe3WZ7R6iZOpzZq4ac1p+UermZMl89+a/byj0Ra9815ted59PQ32hlrXXRjH\nDpCLX6ML5NlNsm/ZRqstfdXzbsZt06sLZNvNB1Za8RDWyZdo7q8udq5Mu/mIMt4md2lmy7JzZuWJ\ndHgfBL8RvGo1MTXTxPSPx/8AstJ1XWpIs4BwSdbeNVqq/URPu0n73/s9hEREbRG0QUpWlYrWIisR\ntER5JbSccur2gCUAAAAPM8Sry8Uyz67fwuxbzVPGsE49XGbvF42V4M0TEL33ERnktsxpk3sumK2j\nadmFdPFZ33VS2Mdui2J3UU6LYlFSsN2O5NkCyJ6K7T1TEsbAsxdpReerKkTFGMxvYEz0rsqtbbpC\nb2VT1QEzuwtbaGUxspuJU3neWdKoiu8rq12gCI92YatLcublnzbEz1aOptyZqTuDHLfxN6R0+t5X\nqdJhjBp6UiPLeXl9NSMnEKxHa1+bb8nrlvxUAAAAAAAAAAABTqtNj1eC2LLXeto/R43VabJw/VTh\nydY+7b1h7ho8V4dXiGlmvbJXrS3xRZ1fGv5rzeHN02bEW3cys3xZJx5ImtqztMS3MeTeGFjqlb2O\n8btql3NpbZtYsnSBLeiWfdTjtutid+ghherHS5p0+f3vsX6T8Fkw181d4lMvEWdnHaGnw/UeNh5L\nT7+PpPxbjdyWcvAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAo1Oprgr63ntAmTqdRqK4K9etp7Q5d7Wy2m953lNrWyWm953mVd77R0\nZa1104xxlN9lV8qnJl2a9s3xUXX2ybsJyRDWtl3YWydEC+2VRkzeW6q+T4tbJm+KRdfK1cmWZnlr\nvNp7RC/R6HU8SycmCk7ed57Q9ZwvgOn4fEXtHi5/O9o7fJaZ6z1uRyOEezVstq6jiEbV71xevzer\nrWtKxWsRFY6REeSRrJxz22gCUAAAAAANbX6aNVpL0npMRvWfSXlKamsRMVvXm+EvZXjmpaPWHzfL\noNRjzXicfWJ8phfPxFejx72x7xMzK+sXiNoiXlq+Pi6fWV/VfTNqfLJl/WTg9Pji8R70LqvMV1Gq\nj/zcv6yz+lanzzZP1lWpelTET6S81Gp1P/Gyf90s412rjtnyfqql6asREdWM9+jz9eJ6yP8Az7uh\nodZqMt458tpB1JvEViI3/RhzRt13/R1MNaziiZiJn5K9ZNceKZiIiQcu/WekT+iYrWI3lzdTrs+8\n8uW0fJzcur1Np/zsn6g79phVaIeetqNR/wAXJ/3SwnUaj/i5P+6UD0ldonum161h5mNRqP8Ai5P1\nlNtRqJjacuT9Qd22WN5aGeZyZd/KHJy59RHbLf8AVq31Gp/4uT9ZEvS8Lr/vSs2npzRtL1z53wK+\noza/HW2XJNd99pmX0Rb8VAAAAAAAAAAAAAAcHj/C5yV+l4I9+v24jzj1cLFk8nu5jeNpeW41wmdL\nknU6ev1Vp96sfdn/ANFdTrXG+eq1q5F2LLtbZoY8m8d11bbSydErsYsm+zZrO/zcnBm226uhiyRK\nEtrvCrJDOJTeu8A1MWX6Lqq5N/dnpb5O5ExMbx2cPNTeJb/DM/iYPDtPvY+nzhri/jDy5/W6AuwA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n"], - "mappings": "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kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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G,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CAC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,EAAG,4BC7DgC,CAC7C,WAAY,UACZ,SAAU,mBACR,mBAAuC,OAChC,MAAQ,wBACY,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,8BCRS,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,sCCIqB,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WClC9B,wBAAwC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,mBC0FG,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,cACA,kBACA,oBACA,cACA,mBACA,iBACA,iBACA,mBACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,uBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA6B,aAC3B,iBAAiB,gBC9LnB,OAAO,UAAU,I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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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", + "sources": ["../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.js", "../src/tfjs/backend.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js"], + "sourcesContent": ["import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], + "mappings": "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kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,UACxI,CACC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EACnC,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EACnH,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAChF,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAC9D,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GACxC,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EACpF,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GACxC,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,SAEhH,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,SAExB,CACA,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/E,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC1C,IAAK,EAAG,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAChC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtD,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAChD,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,WAE/B,CAAC,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,UACnJ,CAAC,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,KAExC,QAAQ,iBAAmB,iBAC3B,QAAQ,yBAA2B,yBAEnC,QAAQ,OAAS,OACjB,QAAQ,MAAQ,MAChB,QAAQ,MAAQ,MAChB,QAAQ,KAAO,KAEf,QAAQ,MAAQ,MAChB,QAAQ,KAAO,MAAM,IAAI,GAAO,MAAM,IACtC,QAAQ,KAAO,MAAM,IAAI,GAAO,MAAM,IACtC,QAAQ,IAAM,KAAK,IAAI,GAAO,MAAM,MC1oBpC,0CAEA,aAA0B,+BACJ,mCACE,6CAIA,qBACC,2CACuB,CAAC,iBAAkB,AAAO,yBAAiB,kBAAqB,0BAClF,uBACD,+CACwB,CAAC,sBAAuB,uCACpD,AAAO,yBAAiB,8BACzB,CAAC,iBAAiB,GAAI,iBAAiB,iBAAiB,OAAS,sBAC/D,AAAO,yBAAiB,gCACzB,CAAC,kBAAkB,GAAI,kBAAkB,kBAAkB,OAAS,4BAC7D,0BACA,kBACR,wBACK,GAG7B,gEACE,UAAa,EAAG,EAAI,AAAO,iCAAyB,OAAQ,KAC1D,IAAQ,IAAK,SAAY,AAAO,iCAAyB,mBACjC,AAAO,yBAAiB,GAAG,SAAS,4BAC/B,MAAQ,KACrC,GAAI,sBAAwB,KAAK,SAAS,KACxC,UAAa,EAAG,EAAI,QAAQ,OAAQ,KAClC,UAAc,QAAQ,GACtB,UAAU,gBAAgB,IAAM,CAC9B,UAAU,OAAO,GAAI,UAAU,OAAO,GACrC,WAAU,OAAO,GAAK,UAAU,gBAAgB,IAAI,IAAM,KAlCrE,mBA0CE,gEAEE,KAAK,YAAc,GACnB,KAAK,wBAA0B,EAC/B,KAAK,oBAAsB,oBAC3B,KAAK,aAAe,aACpB,KAAK,UAAY,UACjB,KAAK,UAAY,QAAO,KAAK,KAAK,UAClC,KAAK,WAAa,QAAO,KAAK,KAAK,UACnC,KAAK,SAAW,QAAO,KAAK,KAAK,UACjC,KAAK,YAAc,IACnB,KAAK,QAAU,EACf,KAAK,cAAgB,EAGvB,uDACE,YAAgB,AAAS,oBAAW,CAAE,WAAY,IAAI,WAAY,SAAU,IAAI,uBAC5D,CAAC,QAAQ,GAAK,KAAK,UAAW,QAAQ,GAAK,KAAK,yBAC/C,UAAU,IAAI,OAAY,CAC7C,YAAY,GAAM,OAAM,GAAK,KAAK,UAAY,GAC9C,YAAY,GAAM,OAAM,GAAK,KAAK,WAAa,GAAI,MAAM,0BAE7B,QAAU,EAAK,AAAK,yBAAoB,MAAO,CAAC,EAAG,IAAW,mCACrE,QAAU,EAAK,aAAa,IAAI,OAAY,CAAC,GAAG,AAAK,iBAAY,MAAO,sBAAuB,MAAM,KAAQ,mCACrG,QAAU,EAAK,AAAK,2BAAsB,gBAAuB,+BAC9E,CAAC,GAAG,AAAS,sBAAa,CAAE,WAAY,IAAI,WAAY,SAAU,IAAI,WAAa,GACrG,MAAO,eAAc,IAAI,OAAY,CACnC,MAAM,GAAK,AAAK,SAAI,UAAW,sBAAsB,IACrD,MAAM,GAAK,AAAK,SAAI,UAAW,sBAAsB,IACrD,MAAM,KAIV,4CACE,aAAiB,UAAU,gBAAgB,IAAI,aAC7B,UAAU,iBAAiB,IAAI,GACjD,MAAO,UAAW,UAIpB,uEAA4E,IAC1E,QAAY,AAAS,qBAAY,AAAS,oBAAW,KAAK,8BAA8B,CAAC,UAAU,qBAAsB,UAAU,uBAAwB,KAAK,sBAChJ,AAAS,oBAAW,UACzB,AAAG,MAAM,cAAc,MAAM,CAAC,CACvC,IAAI,WAAW,GAAK,KAAK,WACzB,IAAI,WAAW,GAAK,KAAK,UAAW,IAAI,SAAS,GAAK,KAAK,WAC3D,IAAI,SAAS,GAAK,KAAK,YACrB,CAAC,GAAI,CAAC,KAAK,SAAU,KAAK,WAC9B,MAAI,OACF,MAAO,AAAG,MAAM,cAAc,OAEzB,CAAE,IAAK,QAAS,MAIzB,4CAAiD,IAC/C,iBAAqB,GACrB,UAAa,EAAG,EAAI,qBAAsB,KACxC,MAAU,QAAQ,EAAI,KACZ,QAAQ,EAAI,EAAI,KAChB,QAAQ,EAAI,EAAI,GAC1B,aAAa,KAAK,CACf,MACI,EAAK,EAAI,KAAK,SACd,EAAI,KAAK,UAAa,WAAW,GAAK,OAAO,WAAW,GAC5D,EAAI,KAAK,SAAY,WAAW,GAAK,OAAO,WAAW,GAAI,IAGhE,MAAO,CAAE,UAAW,aAAc,KAAM,aAAa,MAAM,kBAI7D,sDACE,iBAAqB,UAAU,AAAO,yBAAiB,GAAG,sBAAsB,0BAA0B,gBACrF,UAAU,AAAO,yBAAiB,GAAG,sBAAsB,0BAA0B,YACxF,cAAe,cAAgB,EAEjD,MAAO,YAAW,IAAI,YACpB,MAAQ,SACR,MAAI,KAAM,EACR,EAAI,aACC,AAAI,IAAM,GACf,GAAI,cAEC,CAAC,MAAM,GAAI,MAAM,GAAI,UAI1B,yBACJ,gBAAkB,YAUlB,GAPA,AAAK,MAAK,UAAY,GAAO,KAAK,QAAU,QAAO,KAAK,SAAS,YAAe,CAAC,QAAO,KAAK,KAAK,SAAW,CAAC,QAAO,iBACnH,UAAW,KAAM,MAAK,oBAAoB,iBAAiB,QAC3D,KAAK,QAAU,GAEjB,AAAI,QAAO,gBAAgB,KAAK,UAG5B,UAAY,SAAS,OAAU,SAAS,MAAM,OAAS,GAAO,EAAC,QAAO,KAAK,KAAK,SAAY,SAAS,MAAM,SAAW,KAAK,eAAmB,KAAK,gBAAkB,QAAO,KAAK,SAAS,WAC5L,KAAK,YAAc,GACnB,KAAK,cAAgB,EACrB,mBAAuB,UAAS,MAC9B,KAAK,YAAY,KAAK,CAAE,WAAY,SAAS,IAAI,WAAW,WAAY,SAAU,SAAS,IAAI,SAAS,WAAY,UAAW,SAAS,UAAW,WAAY,SAAS,aAE1K,AAAI,KAAK,YAAY,OAAS,GAAG,aAAc,IAGjD,GAAI,aACF,GAAI,CAAC,UAAY,CAAC,SAAS,OAAU,SAAS,MAAM,SAAW,EAC7D,YAAK,YAAc,GACnB,KAAK,cAAgB,EACd,KAET,UAAa,EAAG,EAAI,KAAK,YAAY,OAAQ,KAC3C,cAAkB,AAAS,6BAAoB,CAAE,WAAY,KAAK,YAAY,GAAG,WAAY,SAAU,KAAK,YAAY,GAAG,UAAY,SAAS,yBAC5H,AAAS,oBAAW,yBAClB,AAAS,qBAAY,uBACzB,KAAK,YAAY,GAAG,UAAU,uBAC7B,KAAK,YAAY,GAAG,WACvC,KAAK,YAAY,GAAK,IAAK,cAAe,WAAY,WAExD,KAAK,wBAA0B,EAEjC,AAAI,UAAY,SAAS,OACvB,SAAS,MAAM,QAAQ,aACrB,WAAW,IAAI,WAAW,UAC1B,WAAW,IAAI,SAAS,UACxB,WAAW,UAAU,YAKzB,YAAc,AAAG,KAAK,IAAM,KAAK,YAAY,IAAI,UAE/C,gBACY,iBAEZ,GAAI,QAAO,KAAK,SAAS,UACvB,kCAAyC,IAAI,UAAU,QAAU,gBAAmB,wCAA0C,6CAC9H,MAAQ,AAAK,qBAAgB,IAAI,UAAU,cAAe,IAAI,UAAU,kBACxE,eAAmB,AAAS,sBAAa,CAAE,WAAY,IAAI,WAAY,SAAU,IAAI,gCACxD,CAAC,WAAW,GAAK,OAAM,MAAM,GAAI,WAAW,GAAK,OAAM,MAAM,iBACrE,AAAG,MAAM,iBAAiB,OAAO,MAAO,EAAG,sBAChE,eAAiB,AAAK,yBAAoB,CAAC,MAAO,YAClD,MAAO,AAAS,kCAAyB,CAAE,WAAY,IAAI,WAAY,SAAU,IAAI,UAAY,aAAc,CAAC,KAAK,WAAY,KAAK,YAAY,IAAI,UAEtJ,eAAsB,qBACtB,WAAe,OAAM,QACrB,MAAO,AAAS,kCAAyB,CAAE,WAAY,IAAI,WAAY,SAAU,IAAI,UAAY,OAAQ,CAAC,KAAK,WAAY,KAAK,YAAY,IAAI,KAIlJ,GAAI,CAAC,QAAO,KAAK,KAAK,SACpB,gBAAmB,CACjB,OAAQ,KACR,IACA,eAAgB,KAChB,WAAY,IAAI,WAChB,MAAO,OAET,MAAO,aAGT,+BAAsC,KAAK,aAAa,QAAQ,qBAC1C,WAAW,WAAW,GAC5C,GAAI,cAAgB,QAAO,KAAK,SAAS,cAAe,MAAO,MAC/D,mBAAuB,AAAG,QAAQ,cAAe,CAAC,GAAI,cACtC,eAAe,YAE/B,GAAI,QAAO,KAAK,KAAK,SACnB,IAAQ,eAAiB,uBAAyB,kBAAsB,KAAK,UAAU,UAAW,MAAM,gBAAgB,GAAI,gBAAgB,GAAI,KACxI,gBAAkB,wBAA0B,mBAAuB,KAAK,UAAU,UAAW,MAAM,iBAAiB,GAAI,iBAAiB,mBAC1H,KAAK,UAAU,QAAQ,AAAG,OAAO,CAAC,YAAa,mCAC3C,eAAe,uBACtB,mBAAmB,MAAM,EAAG,qBAAuB,IAC/D,2BAA6B,wBAA4B,KAAK,aAAa,YAAa,WAAY,eAAgB,iBACvG,mBAAmB,MAAM,qBAAuB,IAC7D,4BAA8B,yBAA6B,KAAK,aAAa,aAAc,YAAa,+CAC1E,KAAK,iCAAiC,WAC5E,AAAI,KAAK,IAAI,+BAAiC,GAC5C,uBAAsB,UAAW,iBAAkB,QACnD,sBAAsB,UAAW,kBAAmB,UAE/C,AAAI,8BAAgC,EACzC,sBAAsB,UAAW,iBAAkB,OAAQ,CAAC,YAAa,cAEzE,sBAAsB,UAAW,kBAAmB,QAAS,CAAC,YAAa,cAE7E,2BAA+B,KAAK,sBAAsB,UAAW,kBAAmB,gCACxD,KAAK,sBAAsB,UAAW,mBAAoB,SAC1F,UAAY,UAAU,OAAO,wBAAwB,OAAO,yBAG9D,0BAA8B,KAAK,mBAAmB,UAAW,IAAK,MAAO,6BACxD,AAAS,oBAAW,KAAK,8BAA8B,+CAC7C,AAAS,qBAAY,gCAC1B,AAAG,SAAS,kCACnB,CACjB,OAAQ,kBACR,IAAK,aACL,eAAgB,cAChB,WAAY,IAAI,WAChB,MAAO,OAET,MAAI,SAAO,KAAK,KAAK,eAAe,YAAW,UAAY,WAC3D,KAAK,YAAY,GAAK,IAAK,uBAAwB,UAAW,kBAAkB,YAAa,WAAY,IAAI,WAAY,eAAgB,eAElI,cAET,eAAU,QAAQ,OAAO,GAAO,IAAM,MACtC,KAAK,cAAgB,QAAQ,OACtB,QAGT,yCACE,OAAW,UAAU,IAAI,GAAO,EAAE,OACvB,UAAU,IAAI,GAAO,EAAE,eACf,CAAC,KAAK,IAAI,GAAG,IAAK,KAAK,IAAI,GAAG,cAChC,CAAC,KAAK,IAAI,GAAG,IAAK,KAAK,IAAI,GAAG,KAC/C,MAAO,CAAE,WAAY,SAAU,aAGnC,QAAQ,SAAW,WCzQnB,sCAEA,cAA2B,6CACG,2CACN,+CAJxB,MAOE,wDACE,KAAK,aAAe,GAAiB,uBAAS,UAAW,eAAgB,UAAW,SACpF,KAAK,OAAS,aAGV,+BACJ,gBAAoB,KAAM,MAAK,aAAa,QAAQ,OAAO,iBAC3C,GAChB,qBAA0B,cAAe,IACvC,GAAI,WAAW,mBAAoB,SACnC,SAAa,WAAW,OAAS,WAAW,OAAO,YAAc,aACjD,WAAW,sBACP,GACpB,GAAI,MAAQ,KAAK,OAAS,EACxB,YAAe,EAAG,IAAM,AAAO,yBAAiB,OAAQ,MACtD,AAAI,SAAO,KAAK,KAAK,SAAW,IAAI,SAAS,UAAY,KACvD,aAAY,KAAO,AAAO,yBAAiB,KAAK,IAAI,OAAW,KAAK,SAI1E,WAAgB,QAAO,KAAK,KAAK,eAAiB,WAAW,IAAO,CAAE,QAAS,WAAW,IAAI,WAAY,YAAa,WAAW,IAAI,UAAa,SAEvI,WAAW,IAAM,CAC3B,KAAK,IAAI,EAAG,WAAW,IAAI,WAAW,IACtC,KAAK,IAAI,EAAG,WAAW,IAAI,WAAW,IACtC,KAAK,IAAI,OAAM,MAAM,GAAI,WAAW,IAAI,SAAS,IAAM,WAAW,IAAI,WAAW,GACjF,KAAK,IAAI,OAAM,MAAM,GAAI,WAAW,IAAI,SAAS,IAAM,WAAW,IAAI,WAAW,IAC/E,EAEJ,QAAQ,KAAK,CACX,WAAY,WAAW,YAAc,EACrC,IACA,KACA,OACA,QACA,YACA,MAAO,WAAW,MAAQ,AAAG,MAAM,WAAW,OAAS,OAEzD,AAAI,WAAW,QAAQ,WAAW,OAAO,UACzC,AAAI,WAAW,OAAO,WAAW,MAAM,UAEzC,MAAO,sBAIM,CAAC,KAAM,KAAM,MAC9B,8BACE,WAAa,KAAM,SAAQ,IAAI,CAC5B,CAAC,WAAW,IAAM,QAAO,KAAK,QAAW,AAAU,eAAK,SAAU,KAClE,CAAC,WAAW,IAAM,QAAO,KAAK,KAAK,QAAW,AAAG,eAAe,QAAO,KAAK,KAAK,UAAW,CAAE,UAAW,QAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,KAC/J,CAAC,WAAW,IAAM,QAAO,KAAK,KAAK,QAAW,AAAG,eAAe,QAAO,KAAK,KAAK,UAAW,CAAE,UAAW,QAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,OAElK,aAAiB,GAAI,mBAAkB,WAAW,GAAI,WAAW,GAAI,WAAW,GAAI,SACpF,MAAI,SAAO,KAAK,KAAK,SAAS,IAAI,eAAe,QAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MAC9F,AAAI,QAAO,KAAK,KAAK,SAAS,IAAI,eAAe,QAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MACvF,SAGT,QAAQ,KAAO,MACf,QAAQ,kBAAoB,kBAC5B,QAAQ,cAAuB,iBCnE/B,qCAEA,gBAAoB,GAEpB,8BACE,GAAI,CAAC,OAAQ,CAAC,MAAK,QAAS,OAC5B,eAAmB,QACN,MAAK,QACf,OAAO,GAAO,EAAE,aAAe,GAC/B,OAAO,OAAU,GAAK,EAAE,aAAc,WACzB,MAAK,QAClB,IAAI,OAAY,GAAE,GAAK,EAAU,IACjC,OAAO,GAAO,EAAE,aAAe,GAC/B,KAAK,OAAU,EAAE,aAAe,EAAE,sBACrB,MAAK,QAClB,IAAI,OAAY,GAAE,GAAK,EAAU,IACjC,OAAO,GAAO,EAAE,mBAAqB,GACrC,KAAK,OAAU,EAAE,mBAAqB,EAAE,oBAC3C,AAAI,QAAQ,OAAS,YAAY,SAAQ,OAAS,YAClD,AAAI,QAAQ,OAAS,YAAY,SAAQ,OAAS,YAClD,QAAY,CAAE,SAAU,MAAK,SAAU,WAAY,MAAK,WAAY,UAAW,MAAK,UAAW,aAAc,MAAK,QAAQ,OAAQ,cAAe,MAAM,iBAAkB,QAAS,iBAAkB,SACpM,YAAY,MAAQ,IACpB,IAAI,iBAAkB,KAAM,KAG9B,QAAQ,IAAM,WCzBd,iCAEA,aAAyB,qCAEV,QACJ,CAAE,IAAK,WACJ,OAAO,iBAErB,8BACE,MAAK,QAAO,KACV,QAAO,IAAM,KAAM,AAAG,gBAAe,QAAO,KAAK,IAAI,WACrD,IAAI,eAAe,QAAO,KAAK,IAAI,UAAU,MAAM,YAAY,OAE1D,OAAO,IAGhB,wCACE,MAAK,QAAO,IACP,QAAU,QAAO,KAAK,IAAI,YAAe,QAAO,gBAAkB,KAAK,KAAQ,KAAK,IAAM,EAC7F,WACO,MAET,CAAI,QAAO,eAAgB,QAAU,EAChC,QAAU,OAAO,iBACf,GAAI,SAAQ,gBAWjB,WAAe,AAAG,MAAM,eAAe,OAAO,CAAC,QAAO,KAAK,IAAI,UAAW,QAAO,KAAK,IAAI,WAAY,YACtF,AAAG,IAAI,OAAQ,CAAC,MAChC,AAAG,QAAQ,QAEX,aACY,GAEZ,GAAI,CAAC,QAAO,QACV,AAAI,QAAO,KAAK,IAAI,SAAS,MAAO,KAAM,QAAO,IAAI,QAAQ,eAE7D,eAAmB,QAAO,KAAK,IAAI,QAAU,KAAM,AAAG,SAAQ,IAAM,OAAO,IAAI,QAAQ,UAAY,GACnG,KAAO,WAAW,OAAO,QACzB,WAAW,OAAO,UAClB,AAAQ,aAAI,MAAO,YAIrB,GAFA,QAAQ,UAEJ,MACF,UAAa,KAAK,WAClB,IAAI,IAAM,KAAK,MAAM,GAAK,MAAK,IAAM,GAEvC,KAAK,UAEL,KAAO,IACP,QAAQ,QA1Cc,KA8C1B,QAAQ,QAAU,SAClB,QAAQ,KAAO,QChEf,oCAEA,aAAyB,qCAEV,QACJ,CAAE,OAAQ,YACP,OAAO,6BACH,OAGN,CAAC,MAAQ,KAAQ,MAE7B,8BACE,MAAK,QAAO,QACV,QAAO,OAAS,KAAM,AAAG,gBAAe,QAAO,KAAK,OAAO,WAC3D,YAAc,OAAO,OAAO,OAAO,GAAG,MAAM,KAAO,EACnD,IAAI,eAAe,QAAO,KAAK,OAAO,UAAU,MAAM,YAAY,OAE7D,OAAO,OAGhB,wCACE,MAAK,QAAO,OACP,QAAU,QAAO,KAAK,OAAO,YAAe,QAAO,gBAAkB,KAAK,SAAW,GACxF,WACO,MAET,CAAI,QAAO,eAAgB,QAAU,EAChC,QAAU,OAAO,iBACf,GAAI,SAAQ,gBACjB,WAAe,AAAG,MAAM,eAAe,OAAO,CAAC,QAAO,KAAK,OAAO,UAAW,QAAO,KAAK,OAAO,WAAY,YAE5G,AAAI,YACF,QAAU,AAAG,KAAK,KAChB,oBAA2B,AAAG,MAAM,OAAQ,EAAG,WAC/B,AAAG,IAAI,IAAK,IAAI,cACd,AAAG,IAAI,MAAO,IAAI,aACnB,AAAG,IAAI,KAAM,IAAI,cAChB,AAAG,KAAK,CAAC,QAAS,UAAW,WAC/C,MAAO,WAAU,IAAI,IAAK,IAAI,KAGhC,QAAU,AAAG,IAAI,OAAQ,CAAC,MAE5B,AAAG,QAAQ,QAEX,gBACY,GAEZ,GAAI,CAAC,QAAO,QACV,AAAI,QAAO,KAAK,OAAO,SAAS,SAAU,KAAM,QAAO,OAAO,QAAQ,eAEtE,kBAAsB,QAAO,KAAK,OAAO,QAAU,KAAM,AAAG,SAAQ,IAAM,OAAO,OAAO,QAAQ,UAAY,GAC5G,QAAU,cAAc,OAAO,QAC/B,cAAc,OAAO,UACrB,AAAQ,aAAI,SAAU,eAIxB,GAFA,QAAQ,UAEJ,SACF,UAAa,QAAQ,WACrB,GAAI,aAEF,eAAmB,KAAK,MAAM,IAAM,KAAK,IAAI,MAAK,GAAK,MAAK,KAAO,IACnE,AAAI,WAAa,QAAO,KAAK,OAAO,eAClC,KAAI,OAAS,MAAK,GAAK,MAAK,GAAK,SAAW,OAC5C,IAAI,WAAa,iBAInB,eAAmB,KAAK,MAAM,IAAM,KAAK,IAAK,MAAK,GAAK,KAAS,IACjE,AAAI,WAAa,QAAO,KAAK,OAAO,eAClC,KAAI,OAAS,MAAK,IAAM,GAAM,SAAW,OACzC,IAAI,WAAa,KAAK,IAAI,IAAM,cAItC,QAAQ,UAER,KAAO,IACP,QAAQ,QA1DiB,KA8D7B,QAAQ,QAAU,SAClB,QAAQ,KAAO,QCrFf,qCAEA,aAAyB,0CAEL,CAAC,QAAS,UAAW,OAAQ,QAAS,MAAO,UAAW,kBAC7D,QACJ,WACG,OAAO,qBAGT,CAAC,MAAQ,KAAQ,aACf,EAEd,8BACE,MAAK,QAAO,SACV,QAAO,QAAU,KAAM,AAAG,gBAAe,QAAO,KAAK,QAAQ,WAC7D,IAAI,eAAe,QAAO,KAAK,QAAQ,UAAU,MAAM,YAAY,OAE9D,OAAO,QAGhB,wCACE,MAAK,QAAO,QACP,QAAU,QAAO,KAAK,QAAQ,YAAe,QAAO,gBAAmB,KAAK,OAAS,EACxF,WACO,MAET,CAAI,QAAO,eAAgB,QAAU,EAChC,QAAU,OAAO,iBACf,GAAI,SAAQ,gBAWjB,WAAe,AAAG,MAAM,eAAe,OAAO,CAAC,QAAO,KAAK,QAAQ,UAAW,QAAO,KAAK,QAAQ,WAAY,qBACnF,AAAG,MAAM,OAAQ,EAAG,GAC/C,OAAO,UAEP,YAAgB,AAAG,IAAI,IAAK,IAAI,cACd,AAAG,IAAI,MAAO,IAAI,aACnB,AAAG,IAAI,KAAM,IAAI,IAClC,IAAI,UACJ,MAAM,UACN,KAAK,UACL,cAAkB,AAAG,KAAK,CAAC,QAAS,UAAW,WAC/C,QAAQ,UACR,UAAU,UACV,SAAS,UACT,cAAkB,AAAG,KAAK,IAAM,UAAU,IAAI,IAAK,IAAI,IACvD,UAAU,UACV,QAAY,GACZ,GAAI,QAAO,KAAK,QAAQ,SACtB,UACA,GAAK,QAAO,SAKV,gBAAoB,KAAM,AAAG,SAAQ,IAAM,OAAO,QAAQ,QAAQ,YAClE,MAAO,YAAY,OAAO,WAC1B,YAAY,OAAO,UACnB,AAAQ,aAAI,UAAW,kBAPvB,aAAiB,KAAM,QAAO,QAAQ,QAAQ,WAC9C,MAAO,SAAS,WAChB,AAAG,QAAQ,UAOb,UAAa,EAAG,EAAI,MAAK,OAAQ,IAC/B,AAAI,OAAQ,MAAK,GAAK,QAAO,KAAK,QAAQ,eAAe,IAAI,KAAK,CAAE,MAAO,KAAK,IAAI,IAAM,KAAK,MAAM,IAAM,OAAQ,MAAK,IAAM,KAAM,QAAS,YAAY,KAE3J,IAAI,KAAK,OAAU,EAAE,MAAQ,EAAE,OAEjC,UAAU,UACV,KAAO,IACP,QAAQ,QAtDkB,KA0D9B,QAAQ,QAAU,SAClB,QAAQ,KAAO,QCjFf,uCAEA,aAAyB,qCAKV,GAEf,8BACE,MAAK,QAAO,WACV,QAAO,UAAY,KAAM,AAAG,gBAAe,QAAO,KAAK,UAAU,WACjE,IAAI,eAAe,QAAO,KAAK,UAAU,UAAU,MAAM,YAAY,OAEhE,OAAO,UAGhB,8CACE,GAAI,oCAAY,UAAW,sCAAY,QAAQ,MAAO,GAGtD,UAAc,WACG,GAAS,WAAW,IAAI,SAAa,IAAM,YAAW,IAAK,OAAO,aAAgB,KAAQ,MAAQ,MAAQ,IAAO,GAAI,OACtI,MAAQ,MAAK,MAAM,IAAQ,GAAI,WAAa,IAG9C,wCACE,MAAK,QAAO,UACL,GAAI,SAAQ,gBACjB,WAAe,AAAG,MAAM,eAAe,OAAO,CAAC,QAAO,KAAK,UAAU,UAAW,QAAO,KAAK,UAAU,WAAY,UAEvG,GACX,GAAI,QAAO,KAAK,UAAU,QACxB,GAAK,QAAO,SAKV,gBAAoB,KAAM,AAAG,SAAQ,IAAM,OAAO,UAAU,QAAQ,CAAE,WAAY,UAClF,MAAO,CAAC,GAAG,YAAY,OAAO,YAC9B,YAAY,OAAO,UACnB,AAAQ,aAAI,UAAW,kBAPvB,eAAmB,KAAM,QAAO,UAAU,QAAQ,CAAE,WAAY,SAChE,MAAO,CAAC,GAAG,WAAW,YACtB,AAAG,QAAQ,YAQf,OAAO,UAEP,QAAQ,SAnBoB,KAuBhC,QAAQ,QAAU,SAClB,QAAQ,YAAc,aACtB,QAAQ,KAAO,QCpDf,uCAEA,iBAAqB,CAAC,QAAS,OAAS,SAExC,6CACE,qDAA6D,QAC7D,MAAO,CAAE,QAAS,QAAS,gBAAiB,iBAG9C,0CACE,qDAA6D,QAC7D,MAAO,CAAE,QAAS,QAAS,gBAAiB,iBAX9C,oBAeE,oBACE,KAAK,MAAQ,OAGf,wBACE,MAAO,AAAG,MAAK,KACb,YAAiB,QAAO,KAAK,YAAc,SAAY,OAAM,UAAU,IAAI,cAAgB,OAAM,UAAU,IAAI,OAAO,IAAI,WAC1G,QAAQ,WAAW,WACnB,KAAK,MAAM,QAAQ,mBACjB,QAAQ,IAAI,GAAO,EAAE,QAAQ,CAAC,kBAC1B,QAAO,KAAK,YAAc,SAAY,wBAAwB,WAAa,2BAA2B,WAC5H,MAAO,CACL,cAAe,aAAa,QAAQ,UACpC,QAAS,aAAa,QACtB,gBAAiB,aAAa,gBAC9B,gBAAiB,aAAa,mBAKpC,UACE,KAAK,MAAM,YAGf,QAAQ,UAAY,YCvCpB,sCACA,iBACE,MAAO,MAAK,MAAM,EAAI,GAFxB,kBAKE,qCACE,KAAK,cAAgB,GAAI,OAAM,SAC/B,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,gBAGzB,WACE,KAAK,cAAc,EAAE,KAAK,kBAAoB,EAC9C,KAAK,KAAK,KAAK,kBAGjB,UACE,SAAY,KAAK,cAAc,GAC/B,YAAK,SAAS,EAAG,KAAK,oBACtB,KAAK,KAAK,GACV,KAAK,cAAc,KAAK,iBAAmB,GAAK,KACzC,KAGT,QACE,MAAO,MAAK,mBAAqB,GAGnC,OACE,MAAO,MAAK,iBAAmB,EAGjC,MACE,MAAO,MAAK,cAAc,MAAM,EAAG,KAAK,iBAAmB,GAG7D,MACE,MAAO,MAAK,cAAc,GAG5B,QACE,KAAO,EAAI,GAAK,KAAK,KAAK,KAAK,GAAI,IACjC,KAAK,SAAS,EAAG,KAAK,IACtB,EAAI,KAAK,GAIb,QACE,KAAO,EAAI,GAAK,KAAK,mBACnB,MAAQ,EAAI,EAEZ,GADA,AAAI,EAAI,KAAK,kBAAoB,KAAK,KAAK,EAAG,EAAI,IAAI,IAClD,CAAC,KAAK,KAAK,EAAG,GAAI,MACtB,KAAK,SAAS,EAAG,GACjB,EAAI,GAIR,cACE,MAAO,MAAK,gBAAgB,KAAK,cAAc,IAGjD,UACE,MAAO,MAAK,WAAW,GAAK,KAAK,WAAW,GAG9C,cACE,MAAU,KAAK,cAAc,GAC7B,KAAK,cAAc,GAAK,KAAK,cAAc,GAC3C,KAAK,cAAc,GAAK,IAG5B,QAAQ,QAAU,UCvElB,qDAA0B,+BAE1B,mGACE,kBAAwB,OAAO,mBACZ,UACJ,KAAK,IAAI,SAAW,mBAAoB,QAC1C,KAAK,IAAI,SAAW,mBAAqB,EAAG,QACzD,iBAAoB,OAAQ,SAAW,KAAM,EAAE,UAC7C,WAAe,KAAK,IAAI,SAAW,mBAAoB,QAC1C,KAAK,IAAI,SAAW,mBAAqB,EAAG,OACzD,iBAAoB,OAAQ,SAAW,KAAM,EAAE,SAC7C,GAAI,OAAO,IAAI,SAAU,SAAU,YAAc,OAC/C,aAAe,GACf,MAGJ,GAAI,CAAC,aAAc,MAErB,MAAO,cAGT,2EACE,+BAAsC,OAAO,YAC/B,GAAa,kBAAQ,OAAS,MAAQ,aAAc,EAAG,SAAY,OACjF,iBAAoB,EAAG,SAAW,OAAQ,EAAE,SAC1C,iBAAoB,EAAG,SAAW,MAAO,EAAE,SACzC,mBAAsB,EAAG,WAAa,aAAc,EAAE,YACpD,UAAc,OAAO,IAAI,SAAU,SAAU,YAE7C,GAAI,MAAQ,eAAgB,SAE5B,AAAI,4BAA4B,WAAY,MAAO,SAAU,SAAU,mBAAoB,SACzF,MAAM,QAAQ,CAAE,MAAO,KAAM,CAAE,SAAU,SAAU,GAAI,cAK/D,MAAO,OAET,QAAQ,wBAA0B,0BCvClC,+CAAQ,UAAY,CAClB,OAAQ,UAAW,WAAY,UAAW,WAAY,eACtD,gBAAiB,YAAa,aAAc,YAAa,aACzD,UAAW,WAAY,WAAY,YAAa,YAAa,cAG/D,QAAQ,cAAgB,QAAQ,UAAU,OAE1C,QAAQ,QAAU,QAAQ,UAAU,OAAO,sBACzC,QAAO,WAAa,EACb,QACN,IAEH,uBAA2B,CACzB,CAAC,UAAW,gBAAiB,CAAC,YAAa,gBAC3C,CAAC,YAAa,aAAc,CAAC,UAAW,YACxC,CAAC,WAAY,aAAc,CAAC,WAAY,iBACxC,CAAC,aAAc,iBAAkB,CAAC,aAAc,cAChD,CAAC,WAAY,aAAc,CAAC,YAAa,cACzC,CAAC,eAAgB,iBAAkB,CAAC,UAAW,aAEjD,QAAQ,qBAAuB,mBAAmB,IAAI,2BAA+B,CAAC,QAAQ,QAAQ,YAAa,QAAQ,QAAQ,cAEnI,QAAQ,UAAY,CAClB,CAAC,OAAQ,WAAY,CAAC,UAAW,WAAY,CAAC,OAAQ,YACtD,CAAC,WAAY,YAAa,CAAC,OAAQ,gBACnC,CAAC,eAAgB,aAAc,CAAC,YAAa,aAC7C,CAAC,eAAgB,WAAY,CAAC,UAAW,YACzC,CAAC,WAAY,aAAc,CAAC,OAAQ,iBACpC,CAAC,gBAAiB,cAAe,CAAC,aAAc,cAChD,CAAC,gBAAiB,YAAa,CAAC,WAAY,aAC5C,CAAC,YAAa,eAGhB,QAAQ,aAAe,CACrB,YACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,YACA,cACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,eC1DF,6CAAqB,gCAErB,8CACE,MAAO,CACL,EAAG,QAAQ,IAAI,EAAG,EAAG,UACrB,EAAG,QAAQ,IAAI,EAAG,EAAG,SAAe,oBAGxC,QAAQ,eAAiB,eAEzB,mDACE,IAAQ,SAAU,SAAU,aAAiB,MACrC,EAAG,GAAM,eAAe,SAAU,SAAU,SAAU,SAC9D,MAAO,CACL,EAAG,KAAK,SAAW,aAAe,EAClC,EAAG,KAAK,SAAW,aAAe,GAGtC,QAAQ,eAAiB,eAEzB,iCACE,WAAe,GAAI,OAAM,MACzB,UAAa,EAAG,EAAI,KAAM,IACxB,OAAO,GAAK,QAEd,MAAO,QAET,QAAQ,UAAY,UAEpB,6BACE,MAAI,GAAI,KAAY,KAChB,EAAI,KAAY,KACb,EAET,QAAQ,MAAQ,OAEhB,sCACE,OAAW,GAAK,MACL,GAAK,GAChB,MAAO,IAAK,GAAK,GAAK,GAExB,QAAQ,gBAAkB,gBAE1B,yBACE,MAAO,CAAE,EAAG,EAAE,EAAI,EAAE,EAAG,EAAG,EAAE,EAAI,EAAE,GAEpC,QAAQ,WAAa,WAErB,kCACE,MAAO,CAAE,EAAG,OAAM,EAAE,EAAG,KAAK,MAAM,EAAG,OAAM,EAAE,EAAG,KAAK,OAEvD,QAAQ,YAAc,cCnDtB,sCACA,QAAqB,gCAErB,0DACE,iBAAqB,cAAc,MAAM,UAC1B,GAAI,cAAa,cAChC,iBAAoB,EAAG,SAAW,aAAc,YAC9C,MAAU,cAAc,IAAI,SAAU,KAC5B,cAAc,IAAI,SAAU,GACtC,OAAO,UAAY,cAAc,IAAI,EAAG,EAAG,UAE7C,MAAO,QAET,QAAQ,oBAAsB,oBAE9B,oDACE,MAAO,CACL,EAAG,cAAc,IAAI,EAAG,EAAG,UAC3B,EAAG,cAAc,IAAI,EAAG,EAAG,SAAe,oBAI9C,6DACE,WAAe,GACf,iBAAoB,EAAG,SAAe,kBAAe,YACnD,aAAiB,oBAAoB,IAAI,SAAU,GAAG,mBACrC,oBAAoB,IAAI,SAAU,GAAG,WAC9C,EAAG,GAAM,eAAe,SAAU,SAAU,SAAU,eAC9D,OAAO,KAAK,GACZ,OAAO,KAAK,GAEd,MAAO,AAAG,UAAS,OAAQ,CAAK,kBAAe,IAEjD,QAAQ,iBAAmB,iBAE3B,yEACE,MAAO,AAAG,MAAK,IAAM,oBAAoB,WAAW,IAAI,AAAG,OAAO,aAAc,UAAU,UAAU,IAAI,iBAAiB,oBAAqB,iBAEhJ,QAAQ,gBAAkB,gBAE1B,mBACE,MAAO,AAAG,MAAK,KACb,YAAgB,EAAE,IAAI,AAAG,OAAO,EAAG,UACnC,MAAO,GAAE,IAAI,QAAQ,IAAI,AAAG,OAAO,EAAG,aAI1C,0BACE,wBAA+B,OAAO,MACtC,MAAO,AAAG,MAAK,KACb,aAAiB,OAAO,QAAQ,CAAC,OAAS,MAAO,gBAClC,SAAS,OAAO,WACf,QAAO,IAAI,AAAG,OAAO,MAAO,UAAU,WAAW,WACjD,KAAI,QAAQ,OAAO,WAAW,GAC9C,MAAO,AAAG,QAAO,CAAC,QAAS,SAAU,KAGzC,QAAQ,SAAW,WCzDnB,sDAA2B,wCACF,uCACC,oDAEG,AAAU,oBAAU,IAAI,kCAAsC,CAAC,AAAU,kBAAQ,gBAAiB,AAAU,kBAAQ,oCACtH,qBAAqB,IAAI,mBAAsB,iCAC/C,qBAAqB,IAAI,mBAAqB,eACzE,qDACE,aAAiB,cAAc,MAAM,GAAK,EAC1C,MAAO,CACL,EAAG,cAAc,IAAI,MAAM,EAAG,MAAM,EAAG,QACvC,EAAG,cAAc,IAAI,MAAM,EAAG,MAAM,EAAG,SAAW,SAGtD,mEACE,MAAO,CACL,EAAG,AAAQ,cAAM,KAAK,MAAM,MAAM,EAAI,cAAe,EAAG,OAAS,GACjE,EAAG,AAAQ,cAAM,KAAK,MAAM,MAAM,EAAI,cAAe,EAAG,MAAQ,IAIpE,0IAAmJ,GACjJ,kBAAwB,aAAa,4BAEP,yBAAyB,eAAe,SAAU,aAAc,OAAQ,oBACjF,gBAAgB,OAAQ,sBAAuB,8BAC7C,AAAQ,mBAAW,eAAe,SAAU,6BAC9C,eACrB,UAAa,EAAG,EAAI,iBAAkB,KACpC,0BAA8B,yBAAyB,eAAgB,aAAc,OAAQ,mBACzE,AAAQ,uBAAe,sBAAsB,EAAG,sBAAsB,EAAG,iBAAkB,SAC/G,eAAiB,AAAQ,mBAAW,CAClC,EAAG,sBAAsB,EAAI,aAC7B,EAAG,sBAAsB,EAAI,cAC5B,CAAE,EAAG,YAAY,EAAG,EAAG,YAAY,IAExC,0BAA8B,yBAAyB,eAAgB,aAAc,OAAQ,aAC/E,aAAa,IAAI,sBAAsB,EAAG,sBAAsB,EAAG,kBACjF,MAAO,CAAE,SAAU,eAAgB,KAAM,AAAU,oBAAU,kBAAmB,OAGlF,wFACE,aAAiB,OAAO,MAAM,YACb,mBAAmB,yBACV,GAAI,OAAM,WAE5B,cAAgB,iBAAqB,eAC3B,AAAQ,uBAAe,SAAU,aAAc,SACjE,kBAAkB,SAAS,IAAM,CAC/B,MAAO,UACP,KAAM,AAAU,oBAAU,SAAS,IACnC,SAAU,WAGZ,aAAgB,SAAW,EAAG,MAAQ,EAAG,EAAE,MACzC,qBAAyB,mBAAmB,uBACnB,mBAAmB,MAC5C,AAAI,kBAAkB,mBAAqB,CAAC,kBAAkB,mBAC5D,mBAAkB,kBAAoB,yBAAyB,KAAM,kBAAkB,kBAAmB,iBAAkB,OAAQ,QAAS,aAAc,mBAI/J,aAAgB,EAAG,KAAO,SAAU,EAAE,MACpC,qBAAyB,mBAAmB,uBACnB,mBAAmB,MAC5C,AAAI,kBAAkB,mBAAqB,CAAC,kBAAkB,mBAC5D,mBAAkB,kBAAoB,yBAAyB,KAAM,kBAAkB,kBAAmB,iBAAkB,OAAQ,QAAS,aAAc,mBAG/J,MAAO,mBAET,QAAQ,WAAa,WAErB,+DACE,eAAiB,gBACK,AAAS,kBAAS,gCACf,KAAM,SAAQ,IAAI,CAAC,cAAc,SAAU,QAAQ,SAAU,cAAc,wBAC/E,iBAAiB,iBAChB,iBAAiB,uBACX,iBAAiB,gBACxB,AAAS,yBAAgB,oBAAqB,QAAO,KAAK,aAAc,kCAClE,KAAM,cAAa,4BACnB,MAAM,KAAK,AAAS,6BAAoB,aAAc,wCACvD,mBAAmB,IAAI,WAC/C,aAAc,MACP,CACL,SAAU,CACR,EAAG,mBAAmB,IAAI,EAAG,GAC7B,EAAG,mBAAmB,IAAI,EAAG,IAE/B,KAAM,AAAU,oBAAU,GAC1B,2BAGsB,kBAAkB,OAAO,KAAS,IAAI,MAAQ,QAAO,KAAK,gBACpF,qBAAc,UACd,aAAa,UACN,CAAE,UAAW,kBAAmB,MAAO,WAAa,kBAAkB,QAE/E,QAAQ,iBAAmB,mBCnG3B,2DAA4B,4CACA,yCACH,kDAEG,EAE5B,qEAAwE,EAAG,eACzE,MAAO,OAAM,KAAK,EAAG,cACnB,0BAA8B,UAAU,YAAY,SACpD,MAAO,AAAQ,yBAAgB,EAAG,EAAG,sBAAsB,EAAG,sBAAsB,IAAM,mBAI9F,4EACE,gCAAoC,kBAAkB,OAAO,SAAW,SAAU,oBAChF,CAAK,oCAAoC,cAAe,iBAAkB,SAAU,aAAa,SAAU,OACpG,QACN,GACH,MAAO,6BAA8B,kBAAkB,OAGzD,+GACE,UAAc,SACA,AAAW,mCAAwB,QAAO,KAAK,eAAgB,oBAAqB,+BACzE,QAAO,KAAK,UAAY,EAEjD,KAAO,MAAM,OAAS,QAAO,KAAK,eAAiB,CAAC,MAAM,UAExD,SAAa,MAAM,0BAEK,AAAQ,uBAAe,KAAK,KAAM,QAAO,KAAK,aAAc,eACpF,GAAI,oCAAoC,MAAO,iBAAkB,gBAAiB,KAAK,KAAK,IAAK,SAEjG,cAAkB,AAAW,sBAAW,KAAM,aAAc,cAAe,QAAO,KAAK,aAAc,uBAAwB,8BAC/G,iBAAiB,MAAO,iBAAkB,WACxD,AAAI,MAAQ,QAAO,KAAK,gBAAgB,MAAM,KAAK,CAAE,UAAW,QAElE,MAAO,OAET,QAAQ,oBAAsB,sBCvC9B,2CAAqB,gCAErB,4DACE,MAAQ,GAAI,eAAiB,EAAI,cAGnC,uDACE,MAAO,AAAI,0BAAqB,OAAO,iCACjC,iCAAgC,UAAU,WAAW,MAAO,UAAU,YAAY,MAAO,gBAG7F,OAAO,KAAK,CAAC,UAAU,WAAY,UAAU,cACtC,QACN,IAEL,QAAQ,qBAAuB,qBAE/B,IAAQ,kBAAmB,mBAAsB,OACjD,mCACE,MAAO,WAAU,OAAO,EAAG,KAAM,KAAM,KAAM,OAAU,UAAY,EAAG,MAAW,EAC/E,KAAM,KAAK,IAAI,KAAM,GACrB,KAAM,KAAK,IAAI,KAAM,GACrB,KAAM,KAAK,IAAI,KAAM,GACrB,KAAM,KAAK,IAAI,KAAM,KACnB,CACF,KAAM,kBACN,KAAM,kBACN,KAAM,kBACN,KAAM,oBAGV,QAAQ,eAAiB,eAEzB,yCACE,IAAQ,KAAM,KAAM,KAAM,MAAS,eAAe,WAClD,MAAO,CAAC,CAAE,EAAG,KAAM,EAAG,MAAQ,CAAE,EAAG,KAAM,EAAG,MAAQ,CAAE,EAAG,KAAM,EAAG,MAAQ,CAAE,EAAG,KAAM,EAAG,OAE1F,QAAQ,qBAAuB,qBAE/B,0CACE,MAAO,SAAQ,IAAI,QAAQ,IAAI,QAAY,OAAO,WAEpD,QAAQ,kBAAoB,kBAE5B,uCACE,MAAO,CACL,MAAO,KAAK,MACZ,UAAW,KAAK,UAAU,IAAI,EAAG,MAAO,KAAM,YAAgB,EAC5D,MACA,KACA,SAAU,CAAE,EAAG,SAAS,EAAI,OAAQ,EAAG,SAAS,EAAI,YAI1D,QAAQ,UAAY,UAEpB,4CACE,WAAc,OAAM,QAAQ,WACZ,OAAM,eAAe,CAAC,QAAS,UAC/C,cAAM,UACC,QAET,QAAQ,SAAW,SAEnB,8FACE,gBAAoB,MAAM,IAAI,MAAU,UAAU,KAAM,OAAS,sBAAuB,MAAQ,uBAChG,MAAO,aAET,QAAQ,kBAAoB,oBCpE5B,0CAEA,cAA2B,+CACK,gDACJ,sCACN,4BAEtB,oDACE,MAAO,IAAI,SAAQ,gBACjB,WAAe,OAAM,MAAM,SACb,OAAM,MAAM,oBACD,KAAM,AAAK,wBAAkB,CAAC,IAAI,cAAe,IAAI,QAAS,IAAI,gBAAiB,IAAI,+BAC3F,iBAAiB,iBAChB,iBAAiB,0BACR,iBAAiB,0BACjB,iBAAiB,SAClC,KAAM,AAAe,oCAAoB,aAAc,cAAe,uBAAwB,uBAAwB,gBACrH,AAAK,uBAAkB,MAAO,CAAC,OAAQ,OAAQ,CAAC,QAAO,KAAK,UAAW,QAAO,KAAK,YAClG,QAAQ,UAIZ,kDACE,MAAO,IAAI,SAAQ,gBACjB,WAAe,OAAM,MAAM,SACb,OAAM,MAAM,QACb,KAAM,AAAW,6BAAiB,IAAI,cAAe,IAAI,QAAS,eACjE,CAAC,aACA,AAAK,uBAAkB,MAAO,CAAC,OAAQ,OAAQ,CAAC,QAAO,KAAK,UAAW,QAAO,KAAK,YAClG,QAAQ,UA7BZ,kBAkCE,oBACE,KAAK,UAAY,YAGb,+BACJ,YAAgB,AAAK,cAAS,OAAO,CAAC,QAAO,KAAK,UAAW,QAAO,KAAK,gBAC7D,KAAK,UAAU,QAAQ,QAAS,eAE7B,QAAO,KAAK,cAAgB,EAAK,KAAM,gBAAe,OAAO,IAAK,SAAU,KAAM,kBAAiB,OAAO,IAAK,SAE9H,WAAI,cAAc,UAClB,IAAI,QAAQ,UACZ,IAAI,gBAAgB,UACpB,IAAI,gBAAgB,UACpB,QAAQ,UAED,MAGT,UACE,KAAK,UAAU,YAGnB,QAAQ,QAAU,QAElB,8BACE,WAAc,KAAM,AAAG,gBAAe,QAAO,KAAK,qBAChC,GAAc,qBAAU,QAC1C,WAAI,eAAe,QAAO,KAAK,UAAU,MAAM,YAAY,MACpD,GAAI,SAAQ,WAErB,QAAQ,KAAO,QCjEf,sDAA8B,6CACH,qCACL,4BAEtB,QAAQ,KAAoB,kBAC5B,QAAQ,QAAuB,qBAE/B,QAAQ,aAAyB,uBACjC,QAAQ,QAAoB,kBAC5B,QAAQ,UAAsB,oBAC9B,QAAQ,UAAsB,oBAC9B,QAAQ,qBAA4B,0BACpC,QAAQ,eAAsB,oBAC9B,QAAQ,qBAA4B,0BACpC,QAAQ,kBAAyB,uBACjC,QAAQ,UAAiB,iBCfzB,iEAqBE,+CACE,KAAK,MAAQ,OACb,KAAK,QAAU,iBAAiB,IAAI,QAAY,CAAC,OAAO,SAAU,OAAO,WACzE,KAAK,cAAgB,AAAG,SAAS,KAAK,SACtC,KAAK,gBAAkB,AAAG,SAAS,CAAC,UAAW,YAC/C,KAAK,sBAAwB,AAAG,SAAS,CAAC,UAAY,EAAG,UAAY,IAGvE,sBACE,MAAO,AAAG,MAAK,KACb,eAAmB,AAAG,MAAM,MAAO,CAAC,EAAG,GAAI,CAAC,GAAI,aAC/B,AAAG,MAAM,MAAO,CAAC,EAAG,GAAI,CAAC,GAAI,oBACtB,AAAG,KAAI,AAAG,IAAI,WAAY,KAAK,iBAAkB,KAAK,4BACzD,AAAG,IAAI,SAAU,KAAK,mCACvB,AAAG,IAAI,AAAG,IAAI,gBAAiB,cAAe,KAAK,2BACrD,AAAG,IAAI,AAAG,KAAI,gBAAiB,cAAe,KAAK,iBACrE,MAAO,AAAG,UAAS,CAAC,YAAa,WAAY,KAIjD,2CACE,MAAO,AAAG,MAAK,KACb,cAAkB,AAAG,KAAI,AAAG,IAAI,iBAAiB,QAAQ,CAAC,GAAI,EAAG,IAAK,KAAK,iBAAkB,KAAK,QAAQ,QAC1G,MAAO,AAAG,KAAI,UAAW,KAAK,wBAI5B,0BACJ,YAAgB,KAAK,MAAM,QAAQ,oBACf,QAAQ,UAC5B,QAAQ,UACR,YAAgB,AAAG,KAAK,IAAM,AAAG,QAAQ,AAAG,MAAM,YAAa,CAAC,EAAG,GAAI,CAAC,GAAI,KAAK,kBAClE,QAAQ,oBACN,AAAG,MAAM,YAAa,CAAC,EAAG,GAAI,CAAC,GAAI,UACtC,KAAK,eAAe,UAClC,SAAS,UACT,cAAkB,KAAM,AAAG,OAAM,uBAAuB,MAAO,OAAQ,QAAO,KAAK,SAAU,QAAO,KAAK,aAAc,QAAO,KAAK,yBAClH,UAAU,YAE3B,QAAQ,UACR,UAAU,UACV,UAAc,GACd,gBAAoB,UAClB,GAAI,OAAO,QAAU,QAAO,KAAK,eAC/B,gBAAoB,AAAG,MAAM,MAAO,CAAC,MAAO,GAAI,CAAC,EAAG,sBAC3B,AAAG,MAAM,YAAa,CAAC,MAAO,GAAI,CAAC,EAAG,mBACzC,AAAG,KAAK,IAAM,KAAK,mBAAmB,iBAAkB,OAAO,QAAQ,CAAC,GAAI,KAClG,iBAAiB,UACjB,MAAM,KAAK,CAAE,IAAK,YAAa,cAAe,WAAY,OAAO,SAGrE,mBAAY,UACZ,MAAM,UACC,WAGH,oCACJ,gBAAoB,OAAM,MAAM,cACb,OAAM,MAAM,UACjB,AAAG,KAAK,IAAM,OAAM,eAAe,CAAC,QAAO,KAAK,UAAW,QAAO,KAAK,YAAY,IAAI,OAAO,IAAI,gBAC5F,KAAM,MAAK,SAAS,OAAO,SAC/C,OAAM,UACN,UAAc,GACd,GAAI,CAAC,aAAe,YAAY,SAAW,EAAG,MAAO,OACrD,qBAAyB,cACvB,UAAc,WAAW,IAAI,sBACV,MAAM,MAAM,EAAG,YACjB,MAAM,MAAM,EAAG,iBACV,WAAW,cAAc,YAC/C,WAAW,IAAI,UACf,WAAW,cAAc,UACzB,MAAM,KAAK,AAAI,oBAAoB,CAAE,WAAY,SAAU,cAAe,WAAY,WAAW,YAAc,CAAC,WAAa,QAAO,KAAK,UAAW,YAAc,QAAO,KAAK,aAEhL,MAAO,SAGX,QAAQ,aAAe,eCjGvB,0CAwBA,4BAAgC,0BAEA,uBACN,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,qCACL,6CACS,eA7BnD,MAgCE,qDACE,KAAK,aAAe,aACpB,KAAK,iBAAmB,iBACxB,KAAK,UAAY,UACjB,KAAK,YAAc,GACnB,KAAK,QAAU,EACf,KAAK,cAAgB,EAGvB,qDACE,yBAA6B,cAAc,IAAI,OAAW,AAAK,YAAY,CAAC,GAAG,MAAO,GAAI,+BACpE,KAAK,8BAA8B,sBAEzD,MAAO,AAAI,YAAW,AAAI,YAAY,eAAgB,yBAGxD,kCACE,gBAAoB,KAAK,8BAA8B,yBAEjC,AAAI,WAAW,AAAI,YAAY,aAAc,yBACnE,cAAc,cAAgB,GAC9B,UAAa,EAAG,EAAI,kBAAkB,OAAQ,IAC5C,cAAc,cAAc,KAAK,UAAU,kBAAkB,IAAI,MAAM,EAAG,IAE5E,MAAO,eAGT,wDACE,YAAgB,AAAI,WAAW,kBACX,CAAC,QAAQ,GAAK,KAAK,UAAW,QAAQ,GAAK,KAAK,UAAY,SAAQ,GAAK,QAAQ,IAAM,KAAK,UAAY,gBACvG,UAAU,IAAI,OAAW,CAC5C,YAAY,GAAM,OAAM,GAAK,KAAK,UAAY,GAC9C,YAAY,GAAM,OAAM,GAAK,KAAK,UAAY,GAC9C,YAAY,GAAK,MAAM,0BAEI,AAAK,oBAAoB,MAAO,CAAC,EAAG,kBAC3C,aAAa,IAAI,QACrC,YAAgB,AAAK,YAAY,MAAO,sBACxC,MAAO,CAAC,GAAG,QAAS,MAAM,4BAEE,AAAK,sBAAsB,0BACvC,CAAC,GAAG,AAAI,aAAa,MAAO,qBACpB,CACxB,AAAK,KAAI,UAAW,sBAAsB,IAC1C,AAAK,KAAI,UAAW,sBAAsB,KAE5C,MAAO,eAAc,IAAI,OAAW,CAClC,MAAM,GAAK,kBAAkB,GAC7B,MAAM,GAAK,kBAAkB,GAC7B,MAAM,UAIJ,+BACJ,gBAAkB,SAIlB,AAAK,MAAK,UAAY,GAAO,KAAK,QAAU,QAAO,KAAK,YAAe,CAAC,QAAO,KAAK,WAAa,CAAC,QAAO,iBACvG,OAAQ,KAAM,MAAK,aAAa,mBAAmB,OAAO,SAC1D,KAAK,QAAU,GAEjB,AAAI,QAAO,gBAAgB,KAAK,UAGhC,AAAI,OAAU,MAAM,OAAS,GAAQ,OAAM,SAAW,KAAK,eAAmB,KAAK,gBAAkB,QAAO,KAAK,UAAa,CAAC,QAAO,KAAK,YACzI,MAAK,cAAgB,EACrB,KAAK,YAAc,CAAC,GAAG,OAEvB,AAAI,KAAK,YAAY,OAAS,GAAG,aAAc,KAEjD,UAAc,GAId,UAAa,EAAG,EAAI,KAAK,YAAY,OAAQ,KAC3C,eAAmB,KAAK,YAAY,GACpC,GAAI,CAAC,WAAY,SACjB,GAAI,QAAO,KAAK,WACd,UAAc,QAAO,KAAK,SAAW,AAAK,gBAAgB,WAAW,cAAc,mCAAoC,WAAW,cAAc,6CAA+C,aAC5K,AAAI,aAAa,iCACP,CAAC,WAAW,GAAK,OAAM,MAAM,GAAI,WAAW,GAAK,OAAM,MAAM,iBACrE,QAAO,KAAK,SAAW,AAAG,MAAM,iBAAiB,OAAO,MAAO,EAAG,sBAAwB,OAAM,uBAC9F,AAAK,oBAAoB,CAAC,MAAO,mBACzC,YAAc,KAAK,uBAAuB,WAAW,cAAe,gBAAkB,wBAChF,AAAI,yBAAyB,OAAQ,aAAc,CAAC,KAAK,UAAW,KAAK,sBAC5E,aAAa,IAAI,KACnC,aAAa,UACb,aAAa,UACb,2BAAiC,KAAM,MAAK,iBAAiB,QAAQ,WACrE,UAAU,UACV,eAAmB,YAAY,WAAW,GAE1C,GADA,YAAY,UACR,YAAc,QAAO,KAAK,eAC5B,sBAA0B,AAAG,QAAQ,UAAW,CAAC,GAAI,cACnC,kBAAkB,YACpC,UAAU,UACV,kBAAkB,UAClB,YAAe,KAAK,mBAAmB,UAAW,OAAQ,MAAO,gCACzC,KAAK,uBAAuB,SACpD,KAAK,YAAY,GAAK,gBACtB,WAAe,CACb,UAAW,QACX,WACA,IAAK,CACH,QAAS,gBAAgB,WACzB,YAAa,gBAAgB,WAGjC,MAAM,KAAK,YAEX,MAAK,YAAY,GAAK,KAExB,UAAU,eAGV,aAAiB,AAAI,WAAW,AAAI,YAAY,YAAa,gCAC9C,CACb,WAAY,WAAW,WACvB,IAAK,CACH,QAAS,SAAS,WAClB,YAAa,SAAS,WAG1B,MAAM,KAAK,SAGf,YAAK,YAAc,KAAK,YAAY,OAAO,GAAO,IAAM,MACxD,KAAK,cAAgB,MAAM,OACpB,MAIT,yCACE,OAAW,UAAU,IAAI,GAAO,EAAE,OACvB,UAAU,IAAI,GAAO,EAAE,eACf,CAAC,KAAK,IAAI,GAAG,IAAK,KAAK,IAAI,GAAG,cAChC,CAAC,KAAK,IAAI,GAAG,IAAK,KAAK,IAAI,GAAG,KAC/C,MAAO,CAAE,WAAY,YAIzB,QAAQ,aAAe,eC9KvB,6CAAQ,QAAU,CAChB,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,M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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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", "names": [] } diff --git a/dist/human.json b/dist/human.json index 41e6a465..0c3b24e7 100644 --- a/dist/human.json +++ b/dist/human.json @@ -5,7 +5,7 @@ "imports": [] }, "dist/tfjs.esm.js": { - "bytes": 1526803, + "bytes": 1526705, "imports": [] }, "src/tfjs/backend.js": { @@ -44,7 +44,7 @@ "imports": [] }, "src/face/facepipeline.js": { - "bytes": 13836, + "bytes": 14062, "imports": [ { "path": "dist/tfjs.esm.js" @@ -64,7 +64,7 @@ ] }, "src/face/facemesh.js": { - "bytes": 2816, + "bytes": 3054, "imports": [ { "path": "src/log.js" @@ -350,7 +350,7 @@ ] }, "config.js": { - "bytes": 9530, + "bytes": 9644, "imports": [] }, "src/sample.js": { @@ -362,7 +362,7 @@ "imports": [] }, "src/human.js": { - "bytes": 16644, + "bytes": 16727, "imports": [ { "path": "src/log.js" @@ -419,7 +419,7 @@ "dist/human.js.map": { "imports": [], "inputs": {}, - "bytes": 2123435 + "bytes": 1776778 }, "dist/human.js": { "imports": [], @@ -438,10 +438,10 @@ "bytesInOutput": 30817 }, "src/face/facepipeline.js": { - "bytesInOutput": 9329 + "bytesInOutput": 9513 }, "src/face/facemesh.js": { - "bytesInOutput": 2202 + "bytesInOutput": 2378 }, "src/profile.js": { "bytesInOutput": 846 @@ -513,13 +513,13 @@ "bytesInOutput": 4040 }, "src/human.js": { - "bytesInOutput": 11057 + "bytesInOutput": 11100 }, "src/log.js": { "bytesInOutput": 266 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1525301 + "bytesInOutput": 1525250 }, "src/tfjs/backend.js": { "bytesInOutput": 938 @@ -531,16 +531,16 @@ "bytesInOutput": 1796 }, "config.js": { - "bytesInOutput": 1492 + "bytesInOutput": 1509 }, "src/sample.js": { "bytesInOutput": 55295 }, "package.json": { - "bytesInOutput": 21 + "bytesInOutput": 22 } }, - "bytes": 1839531 + "bytes": 1839900 } } } diff --git a/dist/human.node-gpu.js b/dist/human.node-gpu.js index be618e37..83b713e7 100644 --- a/dist/human.node-gpu.js +++ b/dist/human.node-gpu.js @@ -5,14 +5,14 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node-gpu")))}),require_blazeface=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports2.load=load2;exports2.BlazeFaceModel=BlazeFaceModel;exports2.disposeBox=disposeBox}),require_box=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports2.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports2.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports2.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports2.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.squarifyBox=squarifyBox2}),require_util=__commonJS(exports2=>{exports2.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports2.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports2.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports2.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports2.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports2.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports2.TRI468=TRI468;exports2.TRI68=TRI68;exports2.TRI33=TRI33;exports2.TRI7=TRI7;exports2.UV468=UV468;exports2.UV68=VTX68.map(x=>UV468[x]);exports2.UV33=VTX33.map(x=>UV468[x]);exports2.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports2.Pipeline=Pipeline}),require_facemesh=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports2.load=load2;exports2.MediaPipeFaceMesh=MediaPipeFaceMesh;exports2.triangulation=coords.TRI468}),require_profile=__commonJS(exports2=>{var profileData={};function profile2(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports2.run=profile2}),require_age=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_gender=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_emotion=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_embedding=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports2.predict=predict2;exports2.simmilarity=simmilarity2;exports2.load=load2}),require_modelBase=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports2.BaseModel=BaseModel}),require_heapSort=__commonJS(exports2=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports2.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports2.NUM_KEYPOINTS=exports2.partNames.length;exports2.partIds=exports2.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports2.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports2.partIds[jointNameA],exports2.partIds[jointNameB]]);exports2.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports2.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports2.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports2.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports2.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports2.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports2.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports2.clampVector=clampVector}),require_decoders=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports2.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports2.argmax2d=argmax2d}),require_decodePose=__commonJS(exports2=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports2.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports2=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports2.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports2.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports2.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports2.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports2.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports2.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports2.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports2.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports2.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports2.load=load2}),require_posenet=__commonJS(exports2=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports2.load=modelPoseNet.load;exports2.PoseNet=modelPoseNet.PoseNet;exports2.partChannels=keypoints.partChannels;exports2.partIds=keypoints.partIds;exports2.partNames=keypoints.partNames;exports2.poseChain=keypoints.poseChain;exports2.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports2.getBoundingBox=util.getBoundingBox;exports2.getBoundingBoxPoints=util.getBoundingBoxPoints;exports2.scaleAndFlipPoses=util.scaleAndFlipPoses;exports2.scalePose=util.scalePose}),require_handdetector=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports2.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports2.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports2=>{exports2.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports2.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports2.load=load2}),require_gesture=__commonJS(exports2=>{exports2.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports2.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports2.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node-gpu")))}),require_blazeface=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports2.load=load2;exports2.BlazeFaceModel=BlazeFaceModel;exports2.disposeBox=disposeBox}),require_box=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports2.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports2.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports2.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports2.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.squarifyBox=squarifyBox2}),require_util=__commonJS(exports2=>{exports2.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports2.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports2.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports2.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports2.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports2.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports2.TRI468=TRI468;exports2.TRI68=TRI68;exports2.TRI33=TRI33;exports2.TRI7=TRI7;exports2.UV468=UV468;exports2.UV68=VTX68.map(x=>UV468[x]);exports2.UV33=VTX33.map(x=>UV468[x]);exports2.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports2.Pipeline=Pipeline}),require_facemesh=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports2.load=load2;exports2.MediaPipeFaceMesh=MediaPipeFaceMesh;exports2.triangulation=coords.TRI468}),require_profile=__commonJS(exports2=>{var profileData={};function profile2(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports2.run=profile2}),require_age=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_gender=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_emotion=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_embedding=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports2.predict=predict2;exports2.simmilarity=simmilarity2;exports2.load=load2}),require_modelBase=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports2.BaseModel=BaseModel}),require_heapSort=__commonJS(exports2=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports2.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports2.NUM_KEYPOINTS=exports2.partNames.length;exports2.partIds=exports2.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports2.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports2.partIds[jointNameA],exports2.partIds[jointNameB]]);exports2.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports2.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports2.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports2.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports2.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports2.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports2.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports2.clampVector=clampVector}),require_decoders=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports2.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports2.argmax2d=argmax2d}),require_decodePose=__commonJS(exports2=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports2.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports2=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports2.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports2.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports2.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports2.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports2.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports2.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports2.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports2.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports2.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports2.load=load2}),require_posenet=__commonJS(exports2=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports2.load=modelPoseNet.load;exports2.PoseNet=modelPoseNet.PoseNet;exports2.partChannels=keypoints.partChannels;exports2.partIds=keypoints.partIds;exports2.partNames=keypoints.partNames;exports2.poseChain=keypoints.poseChain;exports2.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports2.getBoundingBox=util.getBoundingBox;exports2.getBoundingBoxPoints=util.getBoundingBoxPoints;exports2.scaleAndFlipPoses=util.scaleAndFlipPoses;exports2.scalePose=util.scalePose}),require_handdetector=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports2.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports2.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports2=>{exports2.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports2.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports2.load=load2}),require_gesture=__commonJS(exports2=>{exports2.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports2.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports2.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos=Math.cos(rotation),sin=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos*(1-lumR)+sin*-lumR,lumG+cos*-lumG+sin*-lumG,lumB+cos*-lumB+sin*(1-lumB),0,0,lumR+cos*-lumR+sin*.143,lumG+cos*(1-lumG)+sin*.14,lumB+cos*-lumB+sin*-.283,0,0,lumR+cos*-lumR+sin*-(1-lumR),lumG+cos*-lumG+sin*lumG,lumB+cos*(1-lumB)+sin*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports2.Canvas=WebGLImageFilter}),require_image=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tf3=__toModule(require_tfjs_esm()),tf=__toModule(require_tfjs_esm()),config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!tf.findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);tf.setWebGLContext(2,gl);let ctx=new tf.GPGPUContext(gl);tf.registerBackend(config.name,()=>new tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`)};exports2.Canvas=WebGLImageFilter}),require_image=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tf3=__toModule(require_tfjs_esm()),tf=__toModule(require_tfjs_esm()),config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!tf.findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);tf.setWebGLContext(2,gl);let ctx=new tf.GPGPUContext(gl);tf.registerBackend(config.name,()=>new tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,7 +731,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}}; +2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}}; /** * @license * Copyright 2020 Google LLC. All Rights Reserved. diff --git a/dist/human.node-gpu.js.map b/dist/human.node-gpu.js.map index e4f5c29c..526f4038 100644 --- a/dist/human.node-gpu.js.map +++ b/dist/human.node-gpu.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-node-gpu.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "../src/human.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node-gpu';\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n"], - "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", + "sources": ["../src/tfjs/tf-node-gpu.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "../src/tfjs/backend.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js"], + "sourcesContent": ["export * from '@tensorflow/tfjs-node-gpu';\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], + "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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CV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;2BNzId,IAAM,IACN,MAAO,cAAgB,YAAoB,YAAY,MACpD,SAAS,OAAO,QAAQ,OAAO,UAAY,IAAO,KAI3D,+BACE,aAAiB,KAAS,KAAO,MAAO,MAAQ,SAChD,MAAO,SAAQ,OAAO,YACpB,QAAO,KAAK,KAAO,IAAI,QAAQ,MAC7B,SAAa,KAAK,UACL,IAAI,KACjB,AAAI,MAAM,QAAQ,OAAS,MAAM,QAAQ,MACvC,KAAK,KAAO,KAAK,OAAO,GAAG,MACtB,AAAI,SAAS,OAAS,SAAS,MACpC,KAAK,KAAO,UAAU,KAAM,MAE5B,KAAK,KAAO,OAGT,MACN,IAvCL,gBA2CE,uBAAyB,IACvB,KAAK,GAAK,IACV,KAAK,QAAc,QACnB,KAAK,OAAS,UAAiB,eAAS,YACxC,KAAK,GAAK,KACV,KAAK,MAAQ,OACb,KAAK,WAAa,EAClB,KAAK,mBAAqB,GAC1B,KAAK,YAAc,GACnB,KAAK,SAAW,GAChB,KAAK,KAAO,GAEZ,KAAK,OAAS,CACZ,SAAU,KACV,QAAS,KACT,SAAU,KACV,KAAM,KACN,IAAK,KACL,OAAQ,KACR,QAAS,MAGX,KAAK,SAAW,SAChB,KAAK,IAAM,IACX,KAAK,OAAS,OACd,KAAK,QAAU,QACf,KAAK,KAAO,QACZ,KAAK,KAAO,SAGd,UACE,MAAI,MAAK,OAAO,QAAwB,aACjC,GAIT,gBACE,GAAI,CAAC,KAAK,mBAAoB,OAC9B,YAAgB,AAAG,aAAS,MAAM,oBACjB,KAAK,WACtB,KAAK,WAAa,QAClB,WAAe,QAAU,SACzB,AAAI,SAAW,GAAG,IAAI,GAAG,IAAK,QAIhC,cACE,GAAI,CAAC,KAAK,YAAa,MAAO,MAC9B,GAAI,CAAC,MAAO,MAAO,uBACnB,GAAI,AAAG,QAAI,MAAM,SAAW,CAAE,iBAAoB,aAChD,MAAO,yBAET,IACE,AAAG,0BAEH,MAAO,qBAET,MAAO,MAGT,mCACE,MAAI,MAAK,OAAO,KAAK,UAAU,QAAgB,AAAU,sBAAY,WAAY,YAC1E,OAIH,kBACJ,KAAK,MAAQ,OACb,cAAkB,MAClB,AAAI,YAAY,MAAK,OAAS,UAAU,KAAK,OAAQ,aAErD,AAAI,KAAK,UACP,KAAI,YAAY,KAAK,kCAAqC,oBAC1D,KAAM,MAAK,aAAa,IACxB,AAAI,AAAG,QAAI,MAAM,YACf,KAAI,iBAAkB,KAAK,QAC3B,IAAI,YAAa,AAAG,QAAI,QAE1B,KAAK,SAAW,IAGlB,AAAI,KAAK,OAAO,MACd,CACE,KAAK,OAAO,SACZ,KAAK,OAAO,IACZ,KAAK,OAAO,OACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACV,KAAM,SAAQ,IAAI,CACpB,KAAK,OAAO,UAAa,MAAK,OAAO,KAAK,QAAU,AAAS,cAAK,KAAK,QAAU,MACjF,KAAK,OAAO,KAAS,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,QAAW,AAAI,SAAK,KAAK,QAAU,MACzG,KAAK,OAAO,QAAY,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,QAAW,AAAO,YAAK,KAAK,QAAU,MAClH,KAAK,OAAO,SAAa,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,QAAW,AAAQ,aAAK,KAAK,QAAU,MACrH,KAAK,OAAO,WAAe,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,QAAW,AAAU,eAAK,KAAK,QAAU,MAC3H,KAAK,OAAO,SAAY,MAAK,OAAO,KAAK,QAAU,AAAQ,aAAK,KAAK,QAAU,MAC/E,KAAK,OAAO,UAAa,MAAK,OAAO,KAAK,QAAU,AAAS,cAAK,KAAK,QAAU,QAGnF,CAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,UAAU,MAAK,OAAO,SAAW,KAAM,AAAS,eAAK,KAAK,SACvG,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,SAAW,CAAC,KAAK,OAAO,KAAK,MAAK,OAAO,IAAM,KAAM,AAAI,UAAK,KAAK,SACxH,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,SAAW,CAAC,KAAK,OAAO,QAAQ,MAAK,OAAO,OAAS,KAAM,AAAO,aAAK,KAAK,SACpI,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,cAAK,KAAK,SACxI,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,SAAW,CAAC,KAAK,OAAO,WAAW,MAAK,OAAO,UAAY,KAAM,AAAU,gBAAK,KAAK,SAChJ,AAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,cAAK,KAAK,SACpG,AAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,UAAU,MAAK,OAAO,SAAW,KAAM,AAAS,eAAK,KAAK,UAEzG,YAAgB,KAAK,MAAM,MAAQ,WACnC,AAAI,QAAW,MAAK,KAAK,MAAQ,IAAI,MAAK,KAAK,KAAO,cAIlD,qBACJ,GAAI,KAAK,OAAO,SAAY,KAAK,OAAO,UAAY,IAAO,OAAU,AAAG,mBAAiB,KAAK,OAAO,SACnG,cAAkB,MAclB,GAbA,KAAK,MAAQ,UAWb,IAAI,mBAAoB,KAAK,OAAO,SAEhC,KAAK,OAAO,UAAY,QAC1B,IAAI,sBAAuB,KAAK,OAAO,UACvC,AAAG,iBAAa,KAAK,OAAO,UAC5B,SAAa,KAAM,AAAG,WAAM,SAAS,yBACrC,AAAK,MAAM,IAAI,6CAajB,GAVA,AAAI,KAAK,OAAO,UAAY,WAC1B,KAAI,+BACJ,AAAQ,YAGV,KAAM,AAAG,gBAAW,KAAK,OAAO,SAChC,AAAG,qBAIC,AAAG,mBAAiB,SACtB,AAAI,KAAK,OAAO,YACd,KAAI,kDAAmD,KAAK,OAAO,YACnE,AAAG,QAAI,IAAI,iCAAkC,KAAK,OAAO,WAAa,EAAI,KAE5E,AAAG,QAAI,IAAI,2BAA4B,IACvC,AAAG,QAAI,IAAI,2BAA4B,IACvC,OAAW,KAAM,AAAG,eAAU,kBAAkB,GAChD,IAAI,cAAc,GAAG,aAAa,GAAG,qBAAqB,GAAG,aAAa,GAAG,aAE/E,KAAM,AAAG,aACT,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,iBAIrC,mBAGJ,+DAKgB,GAChB,KAAK,MAAQ,WACb,UAAY,MACZ,UAAc,KAAM,MAAK,OAAO,SAAS,cAAc,MAAO,KAAK,QACnE,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,WACpC,gBAAmB,QAIjB,GAHA,KAAK,QAAQ,YAGT,CAAC,MAAK,OAAS,MAAK,MAAM,oBAC5B,IAAI,2BAA4B,MAAK,OACrC,SAIF,KAAK,QAAQ,cACb,AAAI,KAAK,OAAO,MACd,OAAS,KAAK,OAAO,KAAK,IAAI,QAAU,AAAI,YAAQ,MAAK,MAAO,KAAK,QAAU,GAE/E,MAAK,MAAQ,UACb,UAAY,MACZ,OAAS,KAAK,OAAO,KAAK,IAAI,QAAU,KAAM,AAAI,aAAQ,MAAK,MAAO,KAAK,QAAU,GACrF,KAAK,KAAK,IAAM,KAAK,MAAM,MAAQ,YAIrC,KAAK,QAAQ,iBACb,AAAI,KAAK,OAAO,MACd,UAAY,KAAK,OAAO,KAAK,OAAO,QAAU,AAAO,eAAQ,MAAK,MAAO,KAAK,QAAU,GAExF,MAAK,MAAQ,aACb,UAAY,MACZ,UAAY,KAAK,OAAO,KAAK,OAAO,QAAU,KAAM,AAAO,gBAAQ,MAAK,MAAO,KAAK,QAAU,GAC9F,KAAK,KAAK,OAAS,KAAK,MAAM,MAAQ,YAIxC,KAAK,QAAQ,kBACb,AAAI,KAAK,OAAO,MACd,WAAa,KAAK,OAAO,KAAK,QAAQ,QAAU,AAAQ,gBAAQ,MAAK,MAAO,KAAK,QAAU,GAE3F,MAAK,MAAQ,cACb,UAAY,MACZ,WAAa,KAAK,OAAO,KAAK,QAAQ,QAAU,KAAM,AAAQ,iBAAQ,MAAK,MAAO,KAAK,QAAU,GACjG,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,YAEzC,KAAK,QAAQ,gBAGb,KAAK,QAAQ,oBACb,AAAI,KAAK,OAAO,MACd,aAAe,KAAK,OAAO,KAAK,UAAU,QAAU,AAAU,kBAAQ,MAAK,MAAO,KAAK,QAAU,GAEjG,MAAK,MAAQ,gBACb,UAAY,MACZ,aAAe,KAAK,OAAO,KAAK,UAAU,QAAU,KAAM,AAAU,mBAAQ,MAAK,MAAO,KAAK,QAAU,GACvG,KAAK,KAAK,UAAY,KAAK,MAAM,MAAQ,YAE3C,KAAK,QAAQ,gBAGb,AAAI,KAAK,OAAO,OACd,EAAC,OAAQ,UAAW,WAAY,cAAgB,KAAM,SAAQ,IAAI,CAAC,OAAQ,UAAW,WAAY,gBAGpG,KAAK,QAAQ,gBAEb,MAAK,MAAM,UAIX,aAAkB,MAAK,YAAY,aAAe,MAAK,YAAY,aAE/D,KAAO,KAAK,IAAI,KAAK,IAAI,MAAK,YAAY,YAAY,GAAG,GAAK,MAAK,YAAY,YAAY,GAAG,IAAK,KAAK,IAAI,MAAK,YAAY,aAAa,GAAG,GAAK,MAAK,YAAY,aAAa,GAAG,KACnL,EAGJ,QAAQ,KAAK,CACX,WAAY,MAAK,WACjB,IAAK,MAAK,IACV,KAAM,MAAK,KAEX,OAAQ,MAAK,OACb,QAAS,MAAK,QACd,YAAa,MAAK,YAClB,IAAK,OAAO,IACZ,OAAQ,UAAU,OAClB,iBAAkB,UAAU,WAC5B,QAAS,WACT,UAAW,aACX,KAAO,WAAa,EAAK,KAAK,MAAM,UAAY,IAAM,IAExD,KAAK,QAAQ,YAEf,YAAK,QAAQ,iBACb,AAAI,KAAK,OAAO,OACd,CAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,KACrC,AAAI,KAAK,KAAK,KAAK,MAAO,MAAK,KAAK,IACpC,AAAI,KAAK,KAAK,QAAQ,MAAO,MAAK,KAAK,OACvC,AAAI,KAAK,KAAK,SAAS,MAAO,MAAK,KAAK,SAEnC,aAGH,wBAA0B,IAC9B,KAAK,MAAQ,QACb,KAAK,OAAS,UAAU,KAAK,OAAQ,YACrC,aAAgB,AAAM,eAAQ,MAAO,KAAK,QAC1C,gBAAQ,OAAO,UACR,SAAQ,YAIX,yBAA2B,IAE/B,MAAO,IAAI,SAAQ,gBACjB,KAAK,MAAQ,SACb,cAGA,KAAK,OAAS,UAAU,KAAK,OAAQ,YAGrC,KAAK,MAAQ,QACb,UAAc,KAAK,OAAO,OAC1B,AAAI,OACF,KAAI,MAAO,OACX,QAAQ,CAAE,SAGZ,sCAIkB,MAGlB,KAAM,MAAK,eAGX,KAAM,MAAK,OAEX,AAAI,KAAK,OAAO,QAAQ,AAAG,aAAS,aACpC,KAAK,QAAQ,gBAEb,UAAY,MACZ,aAAgB,AAAM,eAAQ,MAAO,KAAK,QAC1C,GAAI,CAAC,UAAW,CAAC,SAAQ,QACvB,IAAI,qCACJ,QAAQ,CAAE,MAAO,sCACjB,OAEF,KAAK,KAAK,MAAQ,KAAK,MAAM,MAAQ,WACrC,KAAK,QAAQ,cAGb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,WAAW,SAAQ,QAAU,GACvE,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,WAAW,SAAQ,QAAU,GAC7E,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAItC,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,OAAO,QAAQ,cAAc,SAAQ,OAAQ,KAAK,QAAU,GACtG,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,OAAO,QAAQ,cAAc,SAAQ,OAAQ,KAAK,QAAU,GAC5G,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAEtC,KAAK,QAAQ,aAGb,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,OAAO,SAAS,cAAc,SAAQ,OAAQ,KAAK,QAAU,GACvG,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,OAAO,SAAS,cAAc,SAAQ,OAAQ,KAAK,QAAU,GAC7G,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAKtC,AAAI,KAAK,OAAO,OACd,EAAC,QAAS,QAAS,SAAW,KAAM,SAAQ,IAAI,CAAC,QAAS,QAAS,WAErE,SAAQ,OAAO,UAEf,AAAI,KAAK,OAAO,QAAQ,AAAG,aAAS,WACpC,KAAK,QAAQ,cAEb,eAAiB,GACjB,AAAI,KAAK,OAAO,QAAQ,SACtB,WAAY,MACZ,WAAa,CAAC,GAAG,AAAQ,aAAK,SAAU,GAAG,AAAQ,aAAK,SAAU,GAAG,AAAQ,aAAK,UAClF,AAAK,KAAK,OAAO,MACZ,AAAI,KAAK,KAAK,SAAS,MAAO,MAAK,KAAK,QADrB,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,YAIjE,KAAK,KAAK,MAAQ,KAAK,MAAM,MAAQ,WACrC,KAAK,MAAQ,OACb,QAAQ,CAAE,KAAM,QAAS,KAAM,QAAS,KAAM,QAAS,QAAS,WAAY,YAAa,KAAK,KAAM,OAAQ,SAAQ,gBAIlH,oBACJ,cAAkB,aAAgB,6BAA+B,MAAM,QAAQ,eAAe,UAAU,KAAK,KAAS,IAAI,QAE1H,AAAI,YAAY,MAAK,OAAS,UAAU,KAAK,OAAQ,aACrD,UAAc,KAAK,OAAO,eAC1B,KAAK,OAAO,eAAiB,GAC7B,SACA,OAAQ,KAAK,OAAO,YACb,OAAQ,KAAO,KAAM,WAAiB,MAAO,UAC7C,OAAQ,KAAO,KAAM,WAAiB,MAAO,cACzC,KAAO,KAElB,GAAI,CAAC,KAAM,MAAO,MAClB,WAAe,KAAM,mBAAkB,SAC5B,aACI,KAAM,MAAK,OAAO,OAAQ,mBAC9B,MACX,cAAO,QACP,IAAI,SAAU,KAAK,OAAO,OAAS,GAAK,GAAK,QAC7C,KAAK,OAAO,eAAiB,MACtB", "names": [] } diff --git a/dist/human.node.js b/dist/human.node.js index e1af563a..7e4b1a2c 100644 --- a/dist/human.node.js +++ b/dist/human.node.js @@ -5,14 +5,14 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node")))}),require_blazeface=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports2.load=load2;exports2.BlazeFaceModel=BlazeFaceModel;exports2.disposeBox=disposeBox}),require_box=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports2.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports2.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports2.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports2.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.squarifyBox=squarifyBox2}),require_util=__commonJS(exports2=>{exports2.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports2.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports2.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports2.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports2.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports2.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports2.TRI468=TRI468;exports2.TRI68=TRI68;exports2.TRI33=TRI33;exports2.TRI7=TRI7;exports2.UV468=UV468;exports2.UV68=VTX68.map(x=>UV468[x]);exports2.UV33=VTX33.map(x=>UV468[x]);exports2.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports2.Pipeline=Pipeline}),require_facemesh=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports2.load=load2;exports2.MediaPipeFaceMesh=MediaPipeFaceMesh;exports2.triangulation=coords.TRI468}),require_profile=__commonJS(exports2=>{var profileData={};function profile2(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports2.run=profile2}),require_age=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_gender=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_emotion=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_embedding=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports2.predict=predict2;exports2.simmilarity=simmilarity2;exports2.load=load2}),require_modelBase=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports2.BaseModel=BaseModel}),require_heapSort=__commonJS(exports2=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports2.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports2.NUM_KEYPOINTS=exports2.partNames.length;exports2.partIds=exports2.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports2.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports2.partIds[jointNameA],exports2.partIds[jointNameB]]);exports2.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports2.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports2.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports2.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports2.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports2.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports2.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports2.clampVector=clampVector}),require_decoders=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports2.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports2.argmax2d=argmax2d}),require_decodePose=__commonJS(exports2=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports2.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports2=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports2.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports2.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports2.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports2.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports2.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports2.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports2.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports2.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports2.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports2.load=load2}),require_posenet=__commonJS(exports2=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports2.load=modelPoseNet.load;exports2.PoseNet=modelPoseNet.PoseNet;exports2.partChannels=keypoints.partChannels;exports2.partIds=keypoints.partIds;exports2.partNames=keypoints.partNames;exports2.poseChain=keypoints.poseChain;exports2.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports2.getBoundingBox=util.getBoundingBox;exports2.getBoundingBoxPoints=util.getBoundingBoxPoints;exports2.scaleAndFlipPoses=util.scaleAndFlipPoses;exports2.scalePose=util.scalePose}),require_handdetector=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports2.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports2.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports2=>{exports2.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports2.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports2.load=load2}),require_gesture=__commonJS(exports2=>{exports2.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports2.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports2.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2),require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node")))}),require_blazeface=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),NUM_LANDMARKS=6;function generateAnchors(inputSize){let spec={strides:[inputSize/16,inputSize/8],anchors:[2,6]},anchors=[];for(let i=0;i{box.startEndTensor.dispose(),box.startPoint.dispose(),box.endPoint.dispose()},createBox=startEndTensor=>({startEndTensor,startPoint:tf4.slice(startEndTensor,[0,0],[-1,2]),endPoint:tf4.slice(startEndTensor,[0,2],[-1,2])}),scaleBox=(box,factors)=>{let starts=tf4.mul(box.startPoint,factors),ends=tf4.mul(box.endPoint,factors),newCoordinates=tf4.concat2d([starts,ends],1);return createBox(newCoordinates)};function decodeBounds(boxOutputs,anchors,inputSize){let boxStarts=tf4.slice(boxOutputs,[0,1],[-1,2]),centers=tf4.add(boxStarts,anchors),boxSizes=tf4.slice(boxOutputs,[0,3],[-1,2]),boxSizesNormalized=tf4.div(boxSizes,inputSize),centersNormalized=tf4.div(centers,inputSize),halfBoxSize=tf4.div(boxSizesNormalized,2),starts=tf4.sub(centersNormalized,halfBoxSize),ends=tf4.add(centersNormalized,halfBoxSize),startNormalized=tf4.mul(starts,inputSize),endNormalized=tf4.mul(ends,inputSize),concatAxis=1;return tf4.concat2d([startNormalized,endNormalized],concatAxis)}function scaleBoxFromPrediction(face3,scaleFactor){return tf4.tidy(()=>{let box=face3.box?face3.box:face3;return scaleBox(box,scaleFactor).startEndTensor.squeeze()})}var BlazeFaceModel=class{constructor(model,config2){this.blazeFaceModel=model,this.width=config2.face.detector.inputSize,this.height=config2.face.detector.inputSize,this.anchorsData=generateAnchors(config2.face.detector.inputSize),this.anchors=tf4.tensor2d(this.anchorsData),this.inputSize=tf4.tensor1d([this.width,this.height]),this.config=config2,this.scaleFaces=.8}async getBoundingBoxes(inputImage){if(!inputImage||inputImage.isDisposedInternal||inputImage.shape.length!==4||inputImage.shape[1]<1||inputImage.shape[2]<1)return null;let[detectedOutputs,boxes,scores]=tf4.tidy(()=>{let resizedImage=inputImage.resizeBilinear([this.width,this.height]),normalizedImage=tf4.sub(resizedImage.div(127.5),1),batchedPrediction=this.blazeFaceModel.predict(normalizedImage),prediction;if(Array.isArray(batchedPrediction)){let sorted=batchedPrediction.sort((a,b)=>a.size-b.size),concat384=tf4.concat([sorted[0],sorted[2]],2),concat512=tf4.concat([sorted[1],sorted[3]],2),concat2=tf4.concat([concat512,concat384],1);prediction=concat2.squeeze(0)}else prediction=batchedPrediction.squeeze();let decodedBounds=decodeBounds(prediction,this.anchors,this.inputSize),logits=tf4.slice(prediction,[0,0],[-1,1]),scoresOut=tf4.sigmoid(logits).squeeze();return[prediction,decodedBounds,scoresOut]}),boxIndicesTensor=await tf4.image.nonMaxSuppressionAsync(boxes,scores,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),boxIndices=boxIndicesTensor.arraySync();boxIndicesTensor.dispose();let boundingBoxesMap=boxIndices.map(boxIndex=>tf4.slice(boxes,[boxIndex,0],[1,-1])),boundingBoxes=boundingBoxesMap.map(boundingBox=>{let vals=boundingBox.arraySync();return boundingBox.dispose(),vals}),scoresVal=scores.dataSync(),annotatedBoxes=[];for(let i=0;ithis.config.face.detector.minConfidence){let box=createBox(boundingBoxes[i]),anchor=this.anchorsData[boxIndex],landmarks=tf4.tidy(()=>tf4.slice(detectedOutputs,[boxIndex,NUM_LANDMARKS-1],[1,-1]).squeeze().reshape([NUM_LANDMARKS,-1]));annotatedBoxes.push({box,landmarks,anchor,confidence})}}return detectedOutputs.dispose(),boxes.dispose(),scores.dispose(),detectedOutputs.dispose(),{boxes:annotatedBoxes,scaleFactor:[inputImage.shape[2]/this.width,inputImage.shape[1]/this.height]}}async estimateFaces(input){let{boxes,scaleFactor}=await this.getBoundingBoxes(input),faces=[];for(let face3 of boxes){let landmarkData=face3.landmarks.arraySync(),scaledBox=scaleBoxFromPrediction(face3,scaleFactor),boxData=scaleBox.arraySync(),probabilityData=face3.probability.arraySync(),anchor=face3.anchor,[scaleFactorX,scaleFactorY]=scaleFactor,scaledLandmarks=landmarkData.map(landmark=>[(landmark[0]+anchor[0])*scaleFactorX,(landmark[1]+anchor[1])*scaleFactorY]),normalizedFace={topLeft:boxData.slice(0,2),bottomRight:boxData.slice(2),landmarks:scaledLandmarks,probability:probabilityData};disposeBox(face3.box),face3.landmarks.dispose(),face3.probability.dispose(),scaledBox.dispose(),faces.push(normalizedFace)}return faces}};async function load2(config2){let blazeface=await tf4.loadGraphModel(config2.face.detector.modelPath,{fromTFHub:config2.face.detector.modelPath.includes("tfhub.dev")}),model=new BlazeFaceModel(blazeface,config2);return log(`load model: ${config2.face.detector.modelPath.match(/\/(.*)\./)[1]}`),model}exports2.load=load2;exports2.BlazeFaceModel=BlazeFaceModel;exports2.disposeBox=disposeBox}),require_box=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());function scaleBoxCoordinates2(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]];return{startPoint,endPoint}}exports2.scaleBoxCoordinates=scaleBoxCoordinates2;function getBoxSize2(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}exports2.getBoxSize=getBoxSize2;function getBoxCenter2(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}exports2.getBoxCenter=getBoxCenter2;function cutBoxFromImageAndResize2(box,image4,cropSize){let h=image4.shape[1],w=image4.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf4.image.cropAndResize(image4,boxes,[0],cropSize)}exports2.cutBoxFromImageAndResize=cutBoxFromImageAndResize2;function enlargeBox2(box,factor=1.5){let center=getBoxCenter2(box),size=getBoxSize2(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.enlargeBox=enlargeBox2;function squarifyBox2(box){let centers=getBoxCenter2(box),size=getBoxSize2(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,landmarks:box.landmarks}}exports2.squarifyBox=squarifyBox2}),require_util=__commonJS(exports2=>{exports2.IDENTITY_MATRIX=[[1,0,0],[0,1,0],[0,0,1]];function normalizeRadians2(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}exports2.normalizeRadians=normalizeRadians2;function computeRotation2(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians2(radians)}exports2.computeRotation=computeRotation2;function radToDegrees(rad){return rad*180/Math.PI}exports2.radToDegrees=radToDegrees;function buildTranslationMatrix2(x,y){return[[1,0,x],[0,1,y],[0,0,1]]}function dot2(v1,v2){let product=0;for(let i=0;i{var MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65],rightEyeIris:[473,474,475,476,477],leftEyeUpper0:[466,388,387,386,385,384,398],leftEyeLower0:[263,249,390,373,374,380,381,382,362],leftEyeUpper1:[467,260,259,257,258,286,414],leftEyeLower1:[359,255,339,254,253,252,256,341,463],leftEyeUpper2:[342,445,444,443,442,441,413],leftEyeLower2:[446,261,448,449,450,451,452,453,464],leftEyeLower3:[372,340,346,347,348,349,350,357,465],leftEyebrowUpper:[383,300,293,334,296,336,285,417],leftEyebrowLower:[265,353,276,283,282,295],leftEyeIris:[468,469,470,471,472],midwayBetweenEyes:[168],noseTip:[1],noseBottom:[2],noseRightCorner:[98],noseLeftCorner:[327],rightCheek:[205],leftCheek:[425]},MESH_TO_IRIS_INDICES_MAP=[{key:"EyeUpper0",indices:[9,10,11,12,13,14,15]},{key:"EyeUpper1",indices:[25,26,27,28,29,30,31]},{key:"EyeUpper2",indices:[41,42,43,44,45,46,47]},{key:"EyeLower0",indices:[0,1,2,3,4,5,6,7,8]},{key:"EyeLower1",indices:[16,17,18,19,20,21,22,23,24]},{key:"EyeLower2",indices:[32,33,34,35,36,37,38,39,40]},{key:"EyeLower3",indices:[54,55,56,57,58,59,60,61,62]},{key:"EyebrowUpper",indices:[63,64,65,66,67,68,69,70]},{key:"EyebrowLower",indices:[48,49,50,51,52,53]}],UV468=[[.499976992607117,.652534008026123],[.500025987625122,.547487020492554],[.499974012374878,.602371990680695],[.482113003730774,.471979022026062],[.500150978565216,.527155995368958],[.499909996986389,.498252987861633],[.499523013830185,.40106201171875],[.289712011814117,.380764007568359],[.499954998493195,.312398016452789],[.499987006187439,.269918978214264],[.500023007392883,.107050001621246],[.500023007392883,.666234016418457],[.5000159740448,.679224014282227],[.500023007392883,.692348003387451],[.499976992607117,.695277988910675],[.499976992607117,.70593398809433],[.499976992607117,.719385027885437],[.499976992607117,.737019002437592],[.499967992305756,.781370997428894],[.499816000461578,.562981009483337],[.473773002624512,.573909997940063],[.104906998574734,.254140973091125],[.365929991006851,.409575998783112],[.338757991790771,.41302502155304],[.311120003461838,.409460008144379],[.274657994508743,.389131009578705],[.393361985683441,.403706014156342],[.345234006643295,.344011008739471],[.370094001293182,.346076011657715],[.319321990013123,.347265005111694],[.297903001308441,.353591024875641],[.24779200553894,.410809993743896],[.396889001131058,.842755019664764],[.280097991228104,.375599980354309],[.106310002505779,.399955987930298],[.2099249958992,.391353011131287],[.355807989835739,.534406006336212],[.471751004457474,.65040397644043],[.474155008792877,.680191993713379],[.439785003662109,.657229006290436],[.414617002010345,.66654098033905],[.450374007225037,.680860996246338],[.428770989179611,.682690978050232],[.374971002340317,.727805018424988],[.486716985702515,.547628998756409],[.485300987958908,.527395009994507],[.257764995098114,.314490020275116],[.401223003864288,.455172002315521],[.429818987846375,.548614978790283],[.421351999044418,.533740997314453],[.276895999908447,.532056987285614],[.483370006084442,.499586999416351],[.33721199631691,.282882988452911],[.296391993761063,.293242990970612],[.169294998049736,.193813979625702],[.447580009698868,.302609980106354],[.392390012741089,.353887975215912],[.354490011930466,.696784019470215],[.067304998636246,.730105042457581],[.442739009857178,.572826027870178],[.457098007202148,.584792017936707],[.381974011659622,.694710969924927],[.392388999462128,.694203019142151],[.277076005935669,.271932005882263],[.422551989555359,.563233017921448],[.385919004678726,.281364023685455],[.383103013038635,.255840003490448],[.331431001424789,.119714021682739],[.229923993349075,.232002973556519],[.364500999450684,.189113974571228],[.229622006416321,.299540996551514],[.173287004232407,.278747975826263],[.472878992557526,.666198015213013],[.446828007698059,.668527007102966],[.422762006521225,.673889994621277],[.445307999849319,.580065965652466],[.388103008270264,.693961024284363],[.403039008378983,.706539988517761],[.403629004955292,.693953037261963],[.460041999816895,.557139039039612],[.431158006191254,.692366003990173],[.452181994915009,.692366003990173],[.475387006998062,.692366003990173],[.465828001499176,.779190003871918],[.472328990697861,.736225962638855],[.473087012767792,.717857003211975],[.473122000694275,.704625964164734],[.473033010959625,.695277988910675],[.427942007780075,.695277988910675],[.426479011774063,.703539967536926],[.423162013292313,.711845993995667],[.4183090031147,.720062971115112],[.390094995498657,.639572978019714],[.013953999616206,.560034036636353],[.499913990497589,.58014702796936],[.413199990987778,.69539999961853],[.409626007080078,.701822996139526],[.468080013990402,.601534962654114],[.422728985548019,.585985004901886],[.463079988956451,.593783974647522],[.37211999297142,.47341400384903],[.334562003612518,.496073007583618],[.411671012639999,.546965003013611],[.242175996303558,.14767599105835],[.290776997804642,.201445996761322],[.327338010072708,.256527006626129],[.399509996175766,.748921036720276],[.441727995872498,.261676013469696],[.429764986038208,.187834024429321],[.412198007106781,.108901023864746],[.288955003023148,.398952007293701],[.218936994671822,.435410976409912],[.41278201341629,.398970007896423],[.257135003805161,.355440020561218],[.427684992551804,.437960982322693],[.448339998722076,.536936044692993],[.178560003638268,.45755398273468],[.247308000922203,.457193970680237],[.286267012357712,.467674970626831],[.332827985286713,.460712015628815],[.368755996227264,.447206974029541],[.398963987827301,.432654976844788],[.476410001516342,.405806005001068],[.189241006970406,.523923993110657],[.228962004184723,.348950982093811],[.490725994110107,.562400996685028],[.404670000076294,.485132992267609],[.019469000399113,.401564002037048],[.426243007183075,.420431017875671],[.396993011236191,.548797011375427],[.266469985246658,.376977026462555],[.439121007919312,.51895797252655],[.032313998788595,.644356966018677],[.419054001569748,.387154996395111],[.462783008813858,.505746960639954],[.238978996872902,.779744982719421],[.198220998048782,.831938028335571],[.107550002634525,.540755033493042],[.183610007166862,.740257024765015],[.134409993886948,.333683013916016],[.385764002799988,.883153975009918],[.490967005491257,.579378008842468],[.382384985685349,.508572995662689],[.174399003386497,.397670984268188],[.318785011768341,.39623498916626],[.343364000320435,.400596976280212],[.396100014448166,.710216999053955],[.187885001301765,.588537991046906],[.430987000465393,.944064974784851],[.318993002176285,.898285031318665],[.266247987747192,.869701027870178],[.500023007392883,.190576016902924],[.499976992607117,.954452991485596],[.366169989109039,.398822009563446],[.393207013607025,.39553701877594],[.410373002290726,.391080021858215],[.194993004202843,.342101991176605],[.388664990663528,.362284004688263],[.365961998701096,.355970978736877],[.343364000320435,.355356991291046],[.318785011768341,.35834002494812],[.301414996385574,.363156020641327],[.058132998645306,.319076001644135],[.301414996385574,.387449026107788],[.499987989664078,.618434011936188],[.415838003158569,.624195992946625],[.445681989192963,.566076993942261],[.465844005346298,.620640993118286],[.49992299079895,.351523995399475],[.288718998432159,.819945991039276],[.335278987884521,.852819979190826],[.440512001514435,.902418971061707],[.128294005990028,.791940987110138],[.408771991729736,.373893976211548],[.455606997013092,.451801002025604],[.499877005815506,.908990025520325],[.375436991453171,.924192011356354],[.11421000212431,.615022003650665],[.448662012815475,.695277988910675],[.4480200111866,.704632043838501],[.447111994028091,.715808033943176],[.444831997156143,.730794012546539],[.430011987686157,.766808986663818],[.406787008047104,.685672998428345],[.400738000869751,.681069016456604],[.392399996519089,.677703022956848],[.367855995893478,.663918972015381],[.247923001646996,.601333022117615],[.452769994735718,.420849978923798],[.43639200925827,.359887003898621],[.416164010763168,.368713974952698],[.413385987281799,.692366003990173],[.228018000721931,.683571994304657],[.468268007040024,.352671027183533],[.411361992359161,.804327011108398],[.499989002943039,.469825029373169],[.479153990745544,.442654013633728],[.499974012374878,.439637005329132],[.432112008333206,.493588984012604],[.499886006116867,.866917014122009],[.49991300702095,.821729004383087],[.456548988819122,.819200992584229],[.344549000263214,.745438992977142],[.37890899181366,.574010014533997],[.374292999505997,.780184984207153],[.319687992334366,.570737957954407],[.357154995203018,.604269981384277],[.295284003019333,.621580958366394],[.447750002145767,.862477004528046],[.410986006259918,.508723020553589],[.31395098567009,.775308012962341],[.354128003120422,.812552988529205],[.324548006057739,.703992962837219],[.189096003770828,.646299958229065],[.279776990413666,.71465802192688],[.1338230073452,.682700991630554],[.336768001317978,.644733011722565],[.429883986711502,.466521978378296],[.455527991056442,.548622965812683],[.437114000320435,.558896005153656],[.467287987470627,.529924988746643],[.414712011814117,.335219979286194],[.37704598903656,.322777986526489],[.344107985496521,.320150971412659],[.312875986099243,.32233202457428],[.283526003360748,.333190023899078],[.241245999932289,.382785975933075],[.102986000478268,.468762993812561],[.267612010240555,.424560010433197],[.297879010438919,.433175981044769],[.333433985710144,.433878004550934],[.366427004337311,.426115989685059],[.396012008190155,.416696012020111],[.420121014118195,.41022801399231],[.007561000064015,.480777025222778],[.432949006557465,.569517970085144],[.458638995885849,.479089021682739],[.473466008901596,.545744001865387],[.476087987422943,.563830018043518],[.468472003936768,.555056989192963],[.433990985155106,.582361996173859],[.483518004417419,.562983989715576],[.482482999563217,.57784903049469],[.42645001411438,.389798998832703],[.438998997211456,.39649498462677],[.450067013502121,.400434017181396],[.289712011814117,.368252992630005],[.276670008897781,.363372981548309],[.517862021923065,.471948027610779],[.710287988185883,.380764007568359],[.526226997375488,.573909997940063],[.895093023777008,.254140973091125],[.634069979190826,.409575998783112],[.661242008209229,.41302502155304],[.688880026340485,.409460008144379],[.725341975688934,.389131009578705],[.606630027294159,.40370500087738],[.654766023159027,.344011008739471],[.629905998706818,.346076011657715],[.680678009986877,.347265005111694],[.702096998691559,.353591024875641],[.75221198797226,.410804986953735],[.602918028831482,.842862963676453],[.719901978969574,.375599980354309],[.893692970275879,.399959981441498],[.790081977844238,.391354024410248],[.643998026847839,.534487962722778],[.528249025344849,.65040397644043],[.525849997997284,.680191040039062],[.560214996337891,.657229006290436],[.585384011268616,.66654098033905],[.549625992774963,.680860996246338],[.57122802734375,.682691991329193],[.624852001667023,.72809898853302],[.513050019741058,.547281980514526],[.51509702205658,.527251958847046],[.742246985435486,.314507007598877],[.598631024360657,.454979002475739],[.570338010787964,.548575043678284],[.578631997108459,.533622980117798],[.723087012767792,.532054007053375],[.516445994377136,.499638974666595],[.662801027297974,.282917976379395],[.70362401008606,.293271005153656],[.830704987049103,.193813979625702],[.552385985851288,.302568018436432],[.607609987258911,.353887975215912],[.645429015159607,.696707010269165],[.932694971561432,.730105042457581],[.557260990142822,.572826027870178],[.542901992797852,.584792017936707],[.6180260181427,.694710969924927],[.607590973377228,.694203019142151],[.722943007946014,.271963000297546],[.577413976192474,.563166975975037],[.614082992076874,.281386971473694],[.616907000541687,.255886018276215],[.668509006500244,.119913995265961],[.770092010498047,.232020974159241],[.635536015033722,.189248979091644],[.77039098739624,.299556016921997],[.826722025871277,.278755009174347],[.527121007442474,.666198015213013],[.553171992301941,.668527007102966],[.577238023281097,.673889994621277],[.554691970348358,.580065965652466],[.611896991729736,.693961024284363],[.59696102142334,.706539988517761],[.596370995044708,.693953037261963],[.539958000183105,.557139039039612],[.568841993808746,.692366003990173],[.547818005084991,.692366003990173],[.52461302280426,.692366003990173],[.534089982509613,.779141008853912],[.527670979499817,.736225962638855],[.526912987232208,.717857003211975],[.526877999305725,.704625964164734],[.526966989040375,.695277988910675],[.572058022022247,.695277988910675],[.573521018028259,.703539967536926],[.57683801651001,.711845993995667],[.581691026687622,.720062971115112],[.609944999217987,.639909982681274],[.986046016216278,.560034036636353],[.5867999792099,.69539999961853],[.590372025966644,.701822996139526],[.531915009021759,.601536989212036],[.577268004417419,.585934996604919],[.536915004253387,.593786001205444],[.627542972564697,.473352015018463],[.665585994720459,.495950996875763],[.588353991508484,.546862006187439],[.757824003696442,.14767599105835],[.709249973297119,.201507985591888],[.672684013843536,.256581008434296],[.600408971309662,.74900496006012],[.55826598405838,.261672019958496],[.570303976535797,.187870979309082],[.588165998458862,.109044015407562],[.711045026779175,.398952007293701],[.781069993972778,.435405015945435],[.587247014045715,.398931980133057],[.742869973182678,.355445981025696],[.572156012058258,.437651991844177],[.55186802148819,.536570012569427],[.821442008018494,.457556009292603],[.752701997756958,.457181990146637],[.71375697851181,.467626988887787],[.66711300611496,.460672974586487],[.631101012229919,.447153985500336],[.6008620262146,.432473003864288],[.523481011390686,.405627012252808],[.810747981071472,.523926019668579],[.771045982837677,.348959028720856],[.509127020835876,.562718033790588],[.595292985439301,.485023975372314],[.980530977249146,.401564002037048],[.573499977588654,.420000016689301],[.602994978427887,.548687994480133],[.733529984951019,.376977026462555],[.560611009597778,.519016981124878],[.967685997486115,.644356966018677],[.580985009670258,.387160003185272],[.537728011608124,.505385041236877],[.760966002941132,.779752969741821],[.801778972148895,.831938028335571],[.892440974712372,.54076099395752],[.816350996494293,.740260004997253],[.865594983100891,.333687007427216],[.614073991775513,.883246004581451],[.508952975273132,.579437971115112],[.617941975593567,.508316040039062],[.825608015060425,.397674977779388],[.681214988231659,.39623498916626],[.656635999679565,.400596976280212],[.603900015354156,.710216999053955],[.81208598613739,.588539004325867],[.56801301240921,.944564998149872],[.681007981300354,.898285031318665],[.733752012252808,.869701027870178],[.633830010890961,.398822009563446],[.606792986392975,.39553701877594],[.589659988880157,.391062021255493],[.805015981197357,.342108011245728],[.611334979534149,.362284004688263],[.634037971496582,.355970978736877],[.656635999679565,.355356991291046],[.681214988231659,.35834002494812],[.698584973812103,.363156020641327],[.941866993904114,.319076001644135],[.698584973812103,.387449026107788],[.584177017211914,.624107003211975],[.554318010807037,.566076993942261],[.534153997898102,.62064003944397],[.711217999458313,.819975018501282],[.664629995822906,.852871000766754],[.559099972248077,.902631998062134],[.871706008911133,.791940987110138],[.591234028339386,.373893976211548],[.544341027736664,.451583981513977],[.624562978744507,.924192011356354],[.88577002286911,.615028977394104],[.551338016986847,.695277988910675],[.551980018615723,.704632043838501],[.552887976169586,.715808033943176],[.555167973041534,.730794012546539],[.569944024085999,.767035007476807],[.593203008174896,.685675978660583],[.599261999130249,.681069016456604],[.607599973678589,.677703022956848],[.631937980651855,.663500010967255],[.752032995223999,.601315021514893],[.547226011753082,.420395016670227],[.563543975353241,.359827995300293],[.583841025829315,.368713974952698],[.586614012718201,.692366003990173],[.771915018558502,.683578014373779],[.531597018241882,.352482974529266],[.588370978832245,.804440975189209],[.52079701423645,.442565023899078],[.567984998226166,.493479013442993],[.543282985687256,.819254994392395],[.655317008495331,.745514988899231],[.621008992195129,.574018001556396],[.625559985637665,.78031200170517],[.680198013782501,.570719003677368],[.64276397228241,.604337990283966],[.704662978649139,.621529996395111],[.552012026309967,.862591981887817],[.589071989059448,.508637011051178],[.685944974422455,.775357007980347],[.645735025405884,.812640011310577],[.675342977046967,.703978002071381],[.810858011245728,.646304965019226],[.72012197971344,.714666962623596],[.866151988506317,.682704985141754],[.663187026977539,.644596993923187],[.570082008838654,.466325998306274],[.544561982154846,.548375964164734],[.562758982181549,.558784961700439],[.531987011432648,.530140042304993],[.585271000862122,.335177004337311],[.622952997684479,.32277899980545],[.655896008014679,.320163011550903],[.687132000923157,.322345972061157],[.716481983661652,.333200991153717],[.758756995201111,.382786989212036],[.897013008594513,.468769013881683],[.732392013072968,.424547016620636],[.70211398601532,.433162987232208],[.66652500629425,.433866024017334],[.633504986763,.426087975502014],[.603875994682312,.416586995124817],[.579657971858978,.409945011138916],[.992439985275269,.480777025222778],[.567192018032074,.569419980049133],[.54136598110199,.478899002075195],[.526564002037048,.546118021011353],[.523913025856018,.563830018043518],[.531529009342194,.555056989192963],[.566035985946655,.582329034805298],[.51631098985672,.563053965568542],[.5174720287323,.577877044677734],[.573594987392426,.389806985855103],[.560697972774506,.395331978797913],[.549755990505219,.399751007556915],[.710287988185883,.368252992630005],[.723330020904541,.363372981548309]],TRI468=[127,34,139,11,0,37,232,231,120,72,37,39,128,121,47,232,121,128,104,69,67,175,171,148,157,154,155,118,50,101,73,39,40,9,151,108,48,115,131,194,204,211,74,40,185,80,42,183,40,92,186,230,229,118,202,212,214,83,18,17,76,61,146,160,29,30,56,157,173,106,204,194,135,214,192,203,165,98,21,71,68,51,45,4,144,24,23,77,146,91,205,50,187,201,200,18,91,106,182,90,91,181,85,84,17,206,203,36,148,171,140,92,40,39,193,189,244,159,158,28,247,246,161,236,3,196,54,68,104,193,168,8,117,228,31,189,193,55,98,97,99,126,47,100,166,79,218,155,154,26,209,49,131,135,136,150,47,126,217,223,52,53,45,51,134,211,170,140,67,69,108,43,106,91,230,119,120,226,130,247,63,53,52,238,20,242,46,70,156,78,62,96,46,53,63,143,34,227,173,155,133,123,117,111,44,125,19,236,134,51,216,206,205,154,153,22,39,37,167,200,201,208,36,142,100,57,212,202,20,60,99,28,158,157,35,226,113,160,159,27,204,202,210,113,225,46,43,202,204,62,76,77,137,123,116,41,38,72,203,129,142,64,98,240,49,102,64,41,73,74,212,216,207,42,74,184,169,170,211,170,149,176,105,66,69,122,6,168,123,147,187,96,77,90,65,55,107,89,90,180,101,100,120,63,105,104,93,137,227,15,86,85,129,102,49,14,87,86,55,8,9,100,47,121,145,23,22,88,89,179,6,122,196,88,95,96,138,172,136,215,58,172,115,48,219,42,80,81,195,3,51,43,146,61,171,175,199,81,82,38,53,46,225,144,163,110,246,33,7,52,65,66,229,228,117,34,127,234,107,108,69,109,108,151,48,64,235,62,78,191,129,209,126,111,35,143,163,161,246,117,123,50,222,65,52,19,125,141,221,55,65,3,195,197,25,7,33,220,237,44,70,71,139,122,193,245,247,130,33,71,21,162,153,158,159,170,169,150,188,174,196,216,186,92,144,160,161,2,97,167,141,125,241,164,167,37,72,38,12,145,159,160,38,82,13,63,68,71,226,35,111,158,153,154,101,50,205,206,92,165,209,198,217,165,167,97,220,115,218,133,112,243,239,238,241,214,135,169,190,173,133,171,208,32,125,44,237,86,87,178,85,86,179,84,85,180,83,84,181,201,83,182,137,93,132,76,62,183,61,76,184,57,61,185,212,57,186,214,207,187,34,143,156,79,239,237,123,137,177,44,1,4,201,194,32,64,102,129,213,215,138,59,166,219,242,99,97,2,94,141,75,59,235,24,110,228,25,130,226,23,24,229,22,23,230,26,22,231,112,26,232,189,190,243,221,56,190,28,56,221,27,28,222,29,27,223,30,29,224,247,30,225,238,79,20,166,59,75,60,75,240,147,177,215,20,79,166,187,147,213,112,233,244,233,128,245,128,114,188,114,217,174,131,115,220,217,198,236,198,131,134,177,132,58,143,35,124,110,163,7,228,110,25,356,389,368,11,302,267,452,350,349,302,303,269,357,343,277,452,453,357,333,332,297,175,152,377,384,398,382,347,348,330,303,304,270,9,336,337,278,279,360,418,262,431,304,408,409,310,415,407,270,409,410,450,348,347,422,430,434,313,314,17,306,307,375,387,388,260,286,414,398,335,406,418,364,367,416,423,358,327,251,284,298,281,5,4,373,374,253,307,320,321,425,427,411,421,313,18,321,405,406,320,404,405,315,16,17,426,425,266,377,400,369,322,391,269,417,465,464,386,257,258,466,260,388,456,399,419,284,332,333,417,285,8,346,340,261,413,441,285,327,460,328,355,371,329,392,439,438,382,341,256,429,420,360,364,394,379,277,343,437,443,444,283,275,440,363,431,262,369,297,338,337,273,375,321,450,451,349,446,342,467,293,334,282,458,461,462,276,353,383,308,324,325,276,300,293,372,345,447,382,398,362,352,345,340,274,1,19,456,248,281,436,427,425,381,256,252,269,391,393,200,199,428,266,330,329,287,273,422,250,462,328,258,286,384,265,353,342,387,259,257,424,431,430,342,353,276,273,335,424,292,325,307,366,447,345,271,303,302,423,266,371,294,455,460,279,278,294,271,272,304,432,434,427,272,407,408,394,430,431,395,369,400,334,333,299,351,417,168,352,280,411,325,319,320,295,296,336,319,403,404,330,348,349,293,298,333,323,454,447,15,16,315,358,429,279,14,15,316,285,336,9,329,349,350,374,380,252,318,402,403,6,197,419,318,319,325,367,364,365,435,367,397,344,438,439,272,271,311,195,5,281,273,287,291,396,428,199,311,271,268,283,444,445,373,254,339,263,466,249,282,334,296,449,347,346,264,447,454,336,296,299,338,10,151,278,439,455,292,407,415,358,371,355,340,345,372,390,249,466,346,347,280,442,443,282,19,94,370,441,442,295,248,419,197,263,255,359,440,275,274,300,383,368,351,412,465,263,467,466,301,368,389,380,374,386,395,378,379,412,351,419,436,426,322,373,390,388,2,164,393,370,462,461,164,0,267,302,11,12,374,373,387,268,12,13,293,300,301,446,261,340,385,384,381,330,266,425,426,423,391,429,355,437,391,327,326,440,457,438,341,382,362,459,457,461,434,430,394,414,463,362,396,369,262,354,461,457,316,403,402,315,404,403,314,405,404,313,406,405,421,418,406,366,401,361,306,408,407,291,409,408,287,410,409,432,436,410,434,416,411,264,368,383,309,438,457,352,376,401,274,275,4,421,428,262,294,327,358,433,416,367,289,455,439,462,370,326,2,326,370,305,460,455,254,449,448,255,261,446,253,450,449,252,451,450,256,452,451,341,453,452,413,464,463,441,413,414,258,442,441,257,443,442,259,444,443,260,445,444,467,342,445,459,458,250,289,392,290,290,328,460,376,433,435,250,290,392,411,416,433,341,463,464,453,464,465,357,465,412,343,412,399,360,363,440,437,399,456,420,456,363,401,435,288,372,383,353,339,255,249,448,261,255,133,243,190,133,155,112,33,246,247,33,130,25,398,384,286,362,398,414,362,463,341,263,359,467,263,249,255,466,467,260,75,60,166,238,239,79,162,127,139,72,11,37,121,232,120,73,72,39,114,128,47,233,232,128,103,104,67,152,175,148,173,157,155,119,118,101,74,73,40,107,9,108,49,48,131,32,194,211,184,74,185,191,80,183,185,40,186,119,230,118,210,202,214,84,83,17,77,76,146,161,160,30,190,56,173,182,106,194,138,135,192,129,203,98,54,21,68,5,51,4,145,144,23,90,77,91,207,205,187,83,201,18,181,91,182,180,90,181,16,85,17,205,206,36,176,148,140,165,92,39,245,193,244,27,159,28,30,247,161,174,236,196,103,54,104,55,193,8,111,117,31,221,189,55,240,98,99,142,126,100,219,166,218,112,155,26,198,209,131,169,135,150,114,47,217,224,223,53,220,45,134,32,211,140,109,67,108,146,43,91,231,230,120,113,226,247,105,63,52,241,238,242,124,46,156,95,78,96,70,46,63,116,143,227,116,123,111,1,44,19,3,236,51,207,216,205,26,154,22,165,39,167,199,200,208,101,36,100,43,57,202,242,20,99,56,28,157,124,35,113,29,160,27,211,204,210,124,113,46,106,43,204,96,62,77,227,137,116,73,41,72,36,203,142,235,64,240,48,49,64,42,41,74,214,212,207,183,42,184,210,169,211,140,170,176,104,105,69,193,122,168,50,123,187,89,96,90,66,65,107,179,89,180,119,101,120,68,63,104,234,93,227,16,15,85,209,129,49,15,14,86,107,55,9,120,100,121,153,145,22,178,88,179,197,6,196,89,88,96,135,138,136,138,215,172,218,115,219,41,42,81,5,195,51,57,43,61,208,171,199,41,81,38,224,53,225,24,144,110,105,52,66,118,229,117,227,34,234,66,107,69,10,109,151,219,48,235,183,62,191,142,129,126,116,111,143,7,163,246,118,117,50,223,222,52,94,19,141,222,221,65,196,3,197,45,220,44,156,70,139,188,122,245,139,71,162,145,153,159,149,170,150,122,188,196,206,216,92,163,144,161,164,2,167,242,141,241,0,164,37,11,72,12,144,145,160,12,38,13,70,63,71,31,226,111,157,158,154,36,101,205,203,206,165,126,209,217,98,165,97,237,220,218,237,239,241,210,214,169,140,171,32,241,125,237,179,86,178,180,85,179,181,84,180,182,83,181,194,201,182,177,137,132,184,76,183,185,61,184,186,57,185,216,212,186,192,214,187,139,34,156,218,79,237,147,123,177,45,44,4,208,201,32,98,64,129,192,213,138,235,59,219,141,242,97,97,2,141,240,75,235,229,24,228,31,25,226,230,23,229,231,22,230,232,26,231,233,112,232,244,189,243,189,221,190,222,28,221,223,27,222,224,29,223,225,30,224,113,247,225,99,60,240,213,147,215,60,20,166,192,187,213,243,112,244,244,233,245,245,128,188,188,114,174,134,131,220,174,217,236,236,198,134,215,177,58,156,143,124,25,110,7,31,228,25,264,356,368,0,11,267,451,452,349,267,302,269,350,357,277,350,452,357,299,333,297,396,175,377,381,384,382,280,347,330,269,303,270,151,9,337,344,278,360,424,418,431,270,304,409,272,310,407,322,270,410,449,450,347,432,422,434,18,313,17,291,306,375,259,387,260,424,335,418,434,364,416,391,423,327,301,251,298,275,281,4,254,373,253,375,307,321,280,425,411,200,421,18,335,321,406,321,320,405,314,315,17,423,426,266,396,377,369,270,322,269,413,417,464,385,386,258,248,456,419,298,284,333,168,417,8,448,346,261,417,413,285,326,327,328,277,355,329,309,392,438,381,382,256,279,429,360,365,364,379,355,277,437,282,443,283,281,275,363,395,431,369,299,297,337,335,273,321,348,450,349,359,446,467,283,293,282,250,458,462,300,276,383,292,308,325,283,276,293,264,372,447,346,352,340,354,274,19,363,456,281,426,436,425,380,381,252,267,269,393,421,200,428,371,266,329,432,287,422,290,250,328,385,258,384,446,265,342,386,387,257,422,424,430,445,342,276,422,273,424,306,292,307,352,366,345,268,271,302,358,423,371,327,294,460,331,279,294,303,271,304,436,432,427,304,272,408,395,394,431,378,395,400,296,334,299,6,351,168,376,352,411,307,325,320,285,295,336,320,319,404,329,330,349,334,293,333,366,323,447,316,15,315,331,358,279,317,14,316,8,285,9,277,329,350,253,374,252,319,318,403,351,6,419,324,318,325,397,367,365,288,435,397,278,344,439,310,272,311,248,195,281,375,273,291,175,396,199,312,311,268,276,283,445,390,373,339,295,282,296,448,449,346,356,264,454,337,336,299,337,338,151,294,278,455,308,292,415,429,358,355,265,340,372,388,390,466,352,346,280,295,442,282,354,19,370,285,441,295,195,248,197,457,440,274,301,300,368,417,351,465,251,301,389,385,380,386,394,395,379,399,412,419,410,436,322,387,373,388,326,2,393,354,370,461,393,164,267,268,302,12,386,374,387,312,268,13,298,293,301,265,446,340,380,385,381,280,330,425,322,426,391,420,429,437,393,391,326,344,440,438,458,459,461,364,434,394,428,396,262,274,354,457,317,316,402,316,315,403,315,314,404,314,313,405,313,421,406,323,366,361,292,306,407,306,291,408,291,287,409,287,432,410,427,434,411,372,264,383,459,309,457,366,352,401,1,274,4,418,421,262,331,294,358,435,433,367,392,289,439,328,462,326,94,2,370,289,305,455,339,254,448,359,255,446,254,253,449,253,252,450,252,256,451,256,341,452,414,413,463,286,441,414,286,258,441,258,257,442,257,259,443,259,260,444,260,467,445,309,459,250,305,289,290,305,290,460,401,376,435,309,250,392,376,411,433,453,341,464,357,453,465,343,357,412,437,343,399,344,360,440,420,437,456,360,420,363,361,401,288,265,372,353,390,339,249,339,448,255],TRI68=[0,1,36,0,36,17,1,2,41,1,41,36,2,3,31,2,31,41,3,4,48,3,48,31,4,5,48,5,6,48,6,7,59,6,59,48,7,8,58,7,58,59,8,9,56,8,56,57,8,57,58,9,10,55,9,55,56,10,11,54,10,54,55,11,12,54,12,13,54,13,14,35,13,35,54,14,15,46,14,46,35,15,16,45,15,45,46,16,26,45,17,36,18,18,37,19,18,36,37,19,38,20,19,37,38,20,39,21,20,38,39,21,39,27,22,42,23,22,27,42,23,43,24,23,42,43,24,44,25,24,43,44,25,45,26,25,44,45,27,39,28,27,28,42,28,39,29,28,29,42,29,31,30,29,30,35,29,40,31,29,35,47,29,39,40,29,47,42,30,31,32,30,32,33,30,33,34,30,34,35,31,50,32,31,40,41,31,48,49,31,49,50,32,51,33,32,50,51,33,51,34,34,52,35,34,51,52,35,46,47,35,52,53,35,53,54,36,41,37,37,40,38,37,41,40,38,40,39,42,47,43,43,47,44,44,46,45,44,47,46,48,60,49,48,59,60,49,61,50,49,60,61,50,62,51,50,61,62,51,62,52,52,63,53,52,62,63,53,64,54,53,63,64,54,64,55,55,65,56,55,64,65,56,66,57,56,65,66,57,66,58,58,67,59,58,66,67,59,67,60,60,67,61,61,66,62,61,67,66,62,66,63,63,65,64,63,66,65,21,27,22],TRI33=[0,8,7,7,8,1,2,10,9,9,10,3,17,0,18,18,0,7,18,7,19,19,7,1,19,1,11,19,11,20,21,3,22,21,9,3,20,9,21,20,2,9,20,11,2,23,17,18,25,21,22,24,19,20,24,18,19,24,20,21,24,23,18,24,21,25,11,12,4,11,4,13,1,12,11,11,13,2,12,14,4,4,14,13,14,5,15,14,15,6,12,5,14,14,6,13,8,12,1,2,13,10,8,26,12,10,13,27,26,5,12,13,6,27,0,26,8,10,27,3,5,32,16,16,32,6,5,30,32,6,32,31,26,30,5,27,6,31,0,28,26,3,27,29,17,28,0,3,29,22,23,28,17,22,29,25,28,30,26,27,31,29],TRI7=[0,4,1,2,4,3,4,5,6],VTX68=[127,234,132,58,172,150,149,148,152,377,378,379,397,288,361,454,356,70,63,105,66,107,336,296,334,293,300,168,6,195,4,98,97,2,326,327,33,160,158,133,153,144,362,385,387,263,373,380,57,40,37,0,267,270,287,321,314,17,84,91,78,81,13,311,308,402,14,178],VTX33=[33,133,362,263,1,62,308,159,145,386,374,6,102,331,2,13,14,70,105,107,336,334,300,54,10,284,50,280,234,454,58,288,152],VTX7=[33,133,362,263,1,78,308];exports2.MESH_ANNOTATIONS=MESH_ANNOTATIONS;exports2.MESH_TO_IRIS_INDICES_MAP=MESH_TO_IRIS_INDICES_MAP;exports2.TRI468=TRI468;exports2.TRI68=TRI68;exports2.TRI33=TRI33;exports2.TRI7=TRI7;exports2.UV468=UV468;exports2.UV68=VTX68.map(x=>UV468[x]);exports2.UV33=VTX33.map(x=>UV468[x]);exports2.UV7=VTX7.map(x=>UV468[x])}),require_facepipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),bounding=__toModule(require_box()),util=__toModule(require_util()),coords=__toModule(require_coords()),LANDMARKS_COUNT=468,MESH_MOUTH_INDEX=13,MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[MESH_MOUTH_INDEX,coords.MESH_ANNOTATIONS.midwayBetweenEyes[0]],BLAZEFACE_MOUTH_INDEX=3,BLAZEFACE_NOSE_INDEX=2,BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES=[BLAZEFACE_MOUTH_INDEX,BLAZEFACE_NOSE_INDEX],LEFT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.leftEyeLower0,LEFT_EYE_BOUNDS=[LEFT_EYE_OUTLINE[0],LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length-1]],RIGHT_EYE_OUTLINE=coords.MESH_ANNOTATIONS.rightEyeLower0,RIGHT_EYE_BOUNDS=[RIGHT_EYE_OUTLINE[0],RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length-1]],IRIS_UPPER_CENTER_INDEX=3,IRIS_LOWER_CENTER_INDEX=4,IRIS_IRIS_INDEX=71,IRIS_NUM_COORDINATES=76;function replaceRawCoordinates(rawCoords,newCoords,prefix,keys){for(let i=0;i[scaleFactor[0]*(coord[0]-this.meshWidth/2),scaleFactor[1]*(coord[1]-this.meshHeight/2),coord[2]]),coordsRotationMatrix=angle!==0?util.buildRotationMatrix(angle,[0,0]):util.IDENTITY_MATRIX,coordsRotated=angle!==0?coordsScaled.map(coord=>[...util.rotatePoint(coord,coordsRotationMatrix),coord[2]]):coordsScaled,inverseRotationMatrix=angle!==0?util.invertTransformMatrix(rotationMatrix):util.IDENTITY_MATRIX,boxCenter=[...bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),1];return coordsRotated.map(coord=>[coord[0]+util.dot(boxCenter,inverseRotationMatrix[0]),coord[1]+util.dot(boxCenter,inverseRotationMatrix[1]),coord[2]])}getLeftToRightEyeDepthDifference(rawCoords){let leftEyeZ=rawCoords[LEFT_EYE_BOUNDS[0]][2],rightEyeZ=rawCoords[RIGHT_EYE_BOUNDS[0]][2];return leftEyeZ-rightEyeZ}getEyeBox(rawCoords,face3,eyeInnerCornerIndex,eyeOuterCornerIndex,flip=!1){let box=bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex],rawCoords[eyeOuterCornerIndex]]),this.irisEnlarge)),boxSize=bounding.getBoxSize(box),crop=tf4.image.cropAndResize(face3,[[box.startPoint[1]/this.meshHeight,box.startPoint[0]/this.meshWidth,box.endPoint[1]/this.meshHeight,box.endPoint[0]/this.meshWidth]],[0],[this.irisSize,this.irisSize]);return flip&&(crop=tf4.image.flipLeftRight(crop)),{box,boxSize,crop}}getEyeCoords(eyeData,eyeBox,eyeBoxSize,flip=!1){let eyeRawCoords=[];for(let i=0;i{let z=averageZ;return i===2?z=upperCenterZ:i===4&&(z=lowerCenterZ),[coord[0],coord[1],z]})}async predict(input,config2){let useFreshBox=!1,detector;if((this.skipped===0||this.skipped>config2.face.detector.skipFrames||!config2.face.mesh.enabled||!config2.videoOptimized)&&(detector=await this.boundingBoxDetector.getBoundingBoxes(input),this.skipped=0),config2.videoOptimized&&this.skipped++,detector&&detector.boxes&&detector.boxes.length>0&&(!config2.face.mesh.enabled||detector.boxes.length!==this.detectedFaces&&this.detectedFaces!==config2.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let possible of detector.boxes)this.storedBoxes.push({startPoint:possible.box.startPoint.dataSync(),endPoint:possible.box.endPoint.dataSync(),landmarks:possible.landmarks,confidence:possible.confidence});this.storedBoxes.length>0&&(useFreshBox=!0)}if(useFreshBox){if(!detector||!detector.boxes||detector.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{prediction.box.startPoint.dispose(),prediction.box.endPoint.dispose(),prediction.landmarks.dispose()});let results=tf4.tidy(()=>this.storedBoxes.map((box,i)=>{let face3,angle=0,rotationMatrix;if(config2.face.detector.rotation){let[indexOfMouth,indexOfForehead]=box.landmarks.length>=LANDMARKS_COUNT?MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES:BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;angle=util.computeRotation(box.landmarks[indexOfMouth],box.landmarks[indexOfForehead]);let faceCenter=bounding.getBoxCenter({startPoint:box.startPoint,endPoint:box.endPoint}),faceCenterNormalized=[faceCenter[0]/input.shape[2],faceCenter[1]/input.shape[1]],rotatedImage=tf4.image.rotateWithOffset(input,angle,0,faceCenterNormalized);rotationMatrix=util.buildRotationMatrix(-angle,faceCenter),face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},rotatedImage,[this.meshHeight,this.meshWidth]).div(255)}else{rotationMatrix=util.IDENTITY_MATRIX;let cloned=input.clone();face3=bounding.cutBoxFromImageAndResize({startPoint:box.startPoint,endPoint:box.endPoint},cloned,[this.meshHeight,this.meshWidth]).div(255)}if(!config2.face.mesh.enabled){let prediction2={coords:null,box,faceConfidence:null,confidence:box.confidence,image:face3};return prediction2}let[,confidence,contourCoords]=this.meshDetector.predict(face3),confidenceVal=confidence.dataSync()[0];if(confidenceVala!==null),this.detectedFaces=results.length,results}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint,landmarks}}};exports2.Pipeline=Pipeline}),require_facemesh=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),blazeface=__toModule(require_blazeface()),facepipeline=__toModule(require_facepipeline()),coords=__toModule(require_coords()),MediaPipeFaceMesh=class{constructor(blazeFace,blazeMeshModel,irisModel,config2){this.facePipeline=new facepipeline.Pipeline(blazeFace,blazeMeshModel,irisModel,config2),this.config=config2}async estimateFaces(input,config2){let predictions=await this.facePipeline.predict(input,config2),results=[];for(let prediction of predictions||[]){if(prediction.isDisposedInternal)continue;let mesh=prediction.coords?prediction.coords.arraySync():null,meshRaw=prediction.rawCoords,annotations={};if(mesh&&mesh.length>0)for(let key=0;keymesh[index]));let boxRaw=config2.face.mesh.returnRawData&&prediction.box?{topLeft:prediction.box.startPoint,bottomRight:prediction.box.endPoint}:null,box=prediction.box?[Math.max(0,prediction.box.startPoint[0]),Math.max(0,prediction.box.startPoint[1]),Math.min(input.shape[2],prediction.box.endPoint[0])-prediction.box.startPoint[0],Math.min(input.shape[1],prediction.box.endPoint[1])-prediction.box.startPoint[1]]:0;results.push({confidence:prediction.confidence||0,box,mesh,boxRaw,meshRaw,annotations,image:prediction.image?tf4.clone(prediction.image):null}),prediction.coords&&prediction.coords.dispose(),prediction.image&&prediction.image.dispose()}return results}},faceModels=[null,null,null];async function load2(config2){faceModels=await Promise.all([!faceModels[0]&&config2.face.enabled?blazeface.load(config2):null,!faceModels[1]&&config2.face.mesh.enabled?tf4.loadGraphModel(config2.face.mesh.modelPath,{fromTFHub:config2.face.mesh.modelPath.includes("tfhub.dev")}):null,!faceModels[2]&&config2.face.iris.enabled?tf4.loadGraphModel(config2.face.iris.modelPath,{fromTFHub:config2.face.iris.modelPath.includes("tfhub.dev")}):null]);let faceMesh=new MediaPipeFaceMesh(faceModels[0],faceModels[1],faceModels[2],config2);return config2.face.mesh.enabled&&log(`load model: ${config2.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),config2.face.iris.enabled&&log(`load model: ${config2.face.iris.modelPath.match(/\/(.*)\./)[1]}`),faceMesh}exports2.load=load2;exports2.MediaPipeFaceMesh=MediaPipeFaceMesh;exports2.triangulation=coords.TRI468}),require_profile=__commonJS(exports2=>{var profileData={};function profile2(name,data2){if(!data2||!data2.kernels)return;let maxResults=5,time=data2.kernels.filter(a=>a.kernelTimeMs>0).reduce((a,b)=>a+=b.kernelTimeMs,0),slowest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.kernelTimeMs>0).sort((a,b)=>b.kernelTimeMs-a.kernelTimeMs),largest=data2.kernels.map((a,i)=>(a.id=i,a)).filter(a=>a.totalBytesSnapshot>0).sort((a,b)=>b.totalBytesSnapshot-a.totalBytesSnapshot);slowest.length>maxResults&&(slowest.length=maxResults),largest.length>maxResults&&(largest.length=maxResults);let res={newBytes:data2.newBytes,newTensors:data2.newTensors,peakBytes:data2.peakBytes,numKernelOps:data2.kernels.length,timeKernelOps:time,slowestKernelOps:slowest,largestKernelOps:largest};profileData[name]=res,log("Human profiler",name,res)}exports2.run=profile2}),require_age=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={age:0},skipped=Number.MAX_SAFE_INTEGER;async function load2(config2){return models.age||(models.age=await tf4.loadGraphModel(config2.face.age.modelPath),log(`load model: ${config2.face.age.modelPath.match(/\/(.*)\./)[1]}`)),models.age}async function predict2(image4,config2){return models.age?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.age.inputSize,config2.face.age.inputSize],!1),enhance=tf4.mul(resize,[255]);tf4.dispose(resize);let ageT,obj={};if(!config2.profile)config2.face.age.enabled&&(ageT=await models.age.predict(enhance));else{let profileAge=config2.face.age.enabled?await tf4.profile(()=>models.age.predict(enhance)):{};ageT=profileAge.result.clone(),profileAge.result.dispose(),profile2.run("age",profileAge)}if(enhance.dispose(),ageT){let data2=ageT.dataSync();obj.age=Math.trunc(10*data2[0])/10}ageT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_gender=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={},last={gender:""},skipped=Number.MAX_SAFE_INTEGER,alternative=!1,rgb=[.2989,.587,.114];async function load2(config2){return models.gender||(models.gender=await tf4.loadGraphModel(config2.face.gender.modelPath),alternative=models.gender.inputs[0].shape[3]===1,log(`load model: ${config2.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),models.gender}async function predict2(image4,config2){return models.gender?skipped{let resize=tf4.image.resizeBilinear(image4,[config2.face.gender.inputSize,config2.face.gender.inputSize],!1),enhance;alternative?enhance=tf4.tidy(()=>{let[red,green,blue]=tf4.split(resize,3,3),redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]),grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);return grayscale.sub(.5).mul(2)}):enhance=tf4.mul(resize,[255]),tf4.dispose(resize);let genderT,obj={};if(!config2.profile)config2.face.gender.enabled&&(genderT=await models.gender.predict(enhance));else{let profileGender=config2.face.gender.enabled?await tf4.profile(()=>models.gender.predict(enhance)):{};genderT=profileGender.result.clone(),profileGender.result.dispose(),profile2.run("gender",profileGender)}if(enhance.dispose(),genderT){let data2=genderT.dataSync();if(alternative){let confidence=Math.trunc(100*Math.abs(data2[0]-data2[1]))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]>data2[1]?"female":"male",obj.confidence=confidence)}else{let confidence=Math.trunc(200*Math.abs(data2[0]-.5))/100;confidence>config2.face.gender.minConfidence&&(obj.gender=data2[0]<=.5?"female":"male",obj.confidence=Math.min(.99,confidence))}}genderT.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_emotion=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),annotations=["angry","disgust","fear","happy","sad","surpise","neutral"],models={},last=[],skipped=Number.MAX_SAFE_INTEGER,rgb=[.2989,.587,.114],scale=1;async function load2(config2){return models.emotion||(models.emotion=await tf4.loadGraphModel(config2.face.emotion.modelPath),log(`load model: ${config2.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),models.emotion}async function predict2(image4,config2){return models.emotion?skipped0?(skipped++,last):(config2.videoOptimized?skipped=0:skipped=Number.MAX_SAFE_INTEGER,new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.emotion.inputSize,config2.face.emotion.inputSize],!1),[red,green,blue]=tf4.split(resize,3,3);resize.dispose();let redNorm=tf4.mul(red,rgb[0]),greenNorm=tf4.mul(green,rgb[1]),blueNorm=tf4.mul(blue,rgb[2]);red.dispose(),green.dispose(),blue.dispose();let grayscale=tf4.addN([redNorm,greenNorm,blueNorm]);redNorm.dispose(),greenNorm.dispose(),blueNorm.dispose();let normalize=tf4.tidy(()=>grayscale.sub(.5).mul(2));grayscale.dispose();let obj=[];if(config2.face.emotion.enabled){let data2;if(config2.profile){let profileData=await tf4.profile(()=>models.emotion.predict(normalize));data2=profileData.result.dataSync(),profileData.result.dispose(),profile2.run("emotion",profileData)}else{let emotionT=await models.emotion.predict(normalize);data2=emotionT.dataSync(),tf4.dispose(emotionT)}for(let i=0;iconfig2.face.emotion.minConfidence&&obj.push({score:Math.min(.99,Math.trunc(100*scale*data2[i])/100),emotion:annotations[i]});obj.sort((a,b)=>b.score-a.score)}normalize.dispose(),last=obj,resolve(obj)})):null}exports2.predict=predict2;exports2.load=load2}),require_embedding=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),profile2=__toModule(require_profile()),models={};async function load2(config2){return models.embedding||(models.embedding=await tf4.loadGraphModel(config2.face.embedding.modelPath),log(`load model: ${config2.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),models.embedding}function simmilarity2(embedding1,embedding2){if((embedding1==null?void 0:embedding1.length)!==(embedding2==null?void 0:embedding2.length))return 0;let order=2,distance=10*embedding1.map((val,i)=>val-embedding2[i]).reduce((dist,diff)=>dist+diff**order,0)**(1/order);return Math.trunc(1e3*(1-distance))/1e3}async function predict2(image4,config2){return models.embedding?new Promise(async resolve=>{let resize=tf4.image.resizeBilinear(image4,[config2.face.embedding.inputSize,config2.face.embedding.inputSize],!1),data2=[];if(config2.face.embedding.enabled)if(config2.profile){let profileData=await tf4.profile(()=>models.embedding.predict({img_inputs:resize}));data2=[...profileData.result.dataSync()],profileData.result.dispose(),profile2.run("emotion",profileData)}else{let embeddingT=await models.embedding.predict({img_inputs:resize});data2=[...embeddingT.dataSync()],tf4.dispose(embeddingT)}resize.dispose(),resolve(data2)}):null}exports2.predict=predict2;exports2.simmilarity=simmilarity2;exports2.load=load2}),require_modelBase=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),imageNetMean=[-123.15,-115.9,-103.06];function nameOutputResultsMobileNet(results){let[offsets,heatmap,displacementFwd,displacementBwd]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}function nameOutputResultsResNet(results){let[displacementFwd,displacementBwd,offsets,heatmap]=results;return{offsets,heatmap,displacementFwd,displacementBwd}}var BaseModel=class{constructor(model){this.model=model}predict(input,config2){return tf4.tidy(()=>{let asFloat=config2.body.modelType==="ResNet"?input.toFloat().add(imageNetMean):input.toFloat().div(127.5).sub(1),asBatch=asFloat.expandDims(0),results=this.model.predict(asBatch),results3d=results.map(y=>y.squeeze([0])),namedResults=config2.body.modelType==="ResNet"?nameOutputResultsResNet(results3d):nameOutputResultsMobileNet(results3d);return{heatmapScores:namedResults.heatmap.sigmoid(),offsets:namedResults.offsets,displacementFwd:namedResults.displacementFwd,displacementBwd:namedResults.displacementBwd}})}dispose(){this.model.dispose()}};exports2.BaseModel=BaseModel}),require_heapSort=__commonJS(exports2=>{function half(k){return Math.floor(k/2)}var MaxHeap=class{constructor(maxSize,getElementValue){this.priorityQueue=new Array(maxSize),this.numberOfElements=-1,this.getElementValue=getElementValue}enqueue(x){this.priorityQueue[++this.numberOfElements]=x,this.swim(this.numberOfElements)}dequeue(){let max=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,max}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(k){for(;k>0&&this.less(half(k),k);)this.exchange(k,half(k)),k=half(k)}sink(k){for(;2*k<=this.numberOfElements;){let j=2*k;if(j{var heapSort=__toModule(require_heapSort());function scoreIsMaximumInLocalWindow(keypointId,score,heatmapY,heatmapX,localMaximumRadius,scores){let[height,width]=scores.shape,localMaximum=!0,yStart=Math.max(heatmapY-localMaximumRadius,0),yEnd=Math.min(heatmapY+localMaximumRadius+1,height);for(let yCurrent=yStart;yCurrentscore){localMaximum=!1;break}if(!localMaximum)break}return localMaximum}function buildPartWithScoreQueue(scoreThreshold,localMaximumRadius,scores){let[height,width,numKeypoints]=scores.shape,queue=new heapSort.MaxHeap(height*width*numKeypoints,({score})=>score);for(let heatmapY=0;heatmapY{exports2.partNames=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"];exports2.NUM_KEYPOINTS=exports2.partNames.length;exports2.partIds=exports2.partNames.reduce((result,jointName,i)=>(result[jointName]=i,result),{});var connectedPartNames=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]];exports2.connectedPartIndices=connectedPartNames.map(([jointNameA,jointNameB])=>[exports2.partIds[jointNameA],exports2.partIds[jointNameB]]);exports2.poseChain=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]];exports2.partChannels=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]}),require_vectors=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function getOffsetPoint(y,x,keypoint,offsets){return{y:offsets.get(y,x,keypoint),x:offsets.get(y,x,keypoint+kpt.NUM_KEYPOINTS)}}exports2.getOffsetPoint=getOffsetPoint;function getImageCoords(part,outputStride,offsets){let{heatmapY,heatmapX,id:keypoint}=part,{y,x}=getOffsetPoint(heatmapY,heatmapX,keypoint,offsets);return{x:part.heatmapX*outputStride+x,y:part.heatmapY*outputStride+y}}exports2.getImageCoords=getImageCoords;function fillArray(element,size){let result=new Array(size);for(let i=0;imax?max:a}exports2.clamp=clamp;function squaredDistance(y1,x1,y2,x2){let dy=y2-y1,dx=x2-x1;return dy*dy+dx*dx}exports2.squaredDistance=squaredDistance;function addVectors(a,b){return{x:a.x+b.x,y:a.y+b.y}}exports2.addVectors=addVectors;function clampVector(a,min,max){return{y:clamp(a.y,min,max),x:clamp(a.x,min,max)}}exports2.clampVector=clampVector}),require_decoders=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),kpt=__toModule(require_keypoints());function getPointsConfidence(heatmapScores,heatMapCoords){let numKeypoints=heatMapCoords.shape[0],result=new Float32Array(numKeypoints);for(let keypoint=0;keypointheatMapCoordsBuffer.toTensor().mul(tf4.scalar(outputStride,"int32")).toFloat().add(getOffsetVectors(heatMapCoordsBuffer,offsetsBuffer)))}exports2.getOffsetPoints=getOffsetPoints;function mod(a,b){return tf4.tidy(()=>{let floored=a.div(tf4.scalar(b,"int32"));return a.sub(floored.mul(tf4.scalar(b,"int32")))})}function argmax2d(inputs){let[height,width,depth]=inputs.shape;return tf4.tidy(()=>{let reshaped=inputs.reshape([height*width,depth]),coords=reshaped.argMax(0),yCoords=coords.div(tf4.scalar(width,"int32")).expandDims(1),xCoords=mod(coords,width).expandDims(1);return tf4.concat([yCoords,xCoords],1)})}exports2.argmax2d=argmax2d}),require_decodePose=__commonJS(exports2=>{var keypoints=__toModule(require_keypoints()),vectors=__toModule(require_vectors()),decoders=__toModule(require_decoders()),parentChildrenTuples=keypoints.poseChain.map(([parentJoinName,childJoinName])=>[keypoints.partIds[parentJoinName],keypoints.partIds[childJoinName]]),parentToChildEdges=parentChildrenTuples.map(([,childJointId])=>childJointId),childToParentEdges=parentChildrenTuples.map(([parentJointId])=>parentJointId);function getDisplacement(edgeId,point,displacements){let numEdges=displacements.shape[2]/2;return{y:displacements.get(point.y,point.x,edgeId),x:displacements.get(point.y,point.x,numEdges+edgeId)}}function getStridedIndexNearPoint(point,outputStride,height,width){return{y:vectors.clamp(Math.round(point.y/outputStride),0,height-1),x:vectors.clamp(Math.round(point.x/outputStride),0,width-1)}}function traverseToTargetKeypoint(edgeId,sourceKeypoint,targetKeypointId,scoresBuffer,offsets,outputStride,displacements,offsetRefineStep=2){let[height,width]=scoresBuffer.shape,sourceKeypointIndices=getStridedIndexNearPoint(sourceKeypoint.position,outputStride,height,width),displacement=getDisplacement(edgeId,sourceKeypointIndices,displacements),displacedPoint=vectors.addVectors(sourceKeypoint.position,displacement),targetKeypoint=displacedPoint;for(let i=0;i=0;--edge){let sourceKeypointId=parentToChildEdges[edge],targetKeypointId=childToParentEdges[edge];instanceKeypoints[sourceKeypointId]&&!instanceKeypoints[targetKeypointId]&&(instanceKeypoints[targetKeypointId]=traverseToTargetKeypoint(edge,instanceKeypoints[sourceKeypointId],targetKeypointId,scores,offsets,outputStride,displacementsBwd))}for(let edge=0;edge(totalScore+=score,{position:{y:offsetPointsBuffer.get(i,0),x:offsetPointsBuffer.get(i,1)},part:keypoints.partNames[i],score})),filteredKeypoints=instanceKeypoints.filter(kpt=>kpt.score>config2.body.scoreThreshold);return heatmapValues.dispose(),offsetPoints.dispose(),{keypoints:filteredKeypoints,score:totalScore/instanceKeypoints.length}}exports2.decodeSinglePose=decodeSinglePose}),require_decodeMultiple=__commonJS(exports2=>{var buildParts=__toModule(require_buildParts()),decodePose=__toModule(require_decodePose()),vectors=__toModule(require_vectors()),kLocalMaximumRadius=1;function withinNmsRadiusOfCorrespondingPoint(poses,squaredNmsRadius,{x,y},keypointId){return poses.some(({keypoints})=>{let correspondingKeypoint=keypoints[keypointId].position;return vectors.squaredDistance(y,x,correspondingKeypoint.y,correspondingKeypoint.x)<=squaredNmsRadius})}function getInstanceScore(existingPoses,squaredNmsRadius,instanceKeypoints){let notOverlappedKeypointScores=instanceKeypoints.reduce((result,{position,score},keypointId)=>(withinNmsRadiusOfCorrespondingPoint(existingPoses,squaredNmsRadius,position,keypointId)||(result+=score),result),0);return notOverlappedKeypointScores/instanceKeypoints.length}function decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2){let poses=[],queue=buildParts.buildPartWithScoreQueue(config2.body.scoreThreshold,kLocalMaximumRadius,scoresBuffer),squaredNmsRadius=config2.body.nmsRadius^2;for(;poses.lengthconfig2.body.scoreThreshold&&poses.push({keypoints,score})}return poses}exports2.decodeMultiplePoses=decodeMultiplePoses}),require_util2=__commonJS(exports2=>{var kpt=__toModule(require_keypoints());function eitherPointDoesntMeetConfidence(a,b,minConfidence){return a(eitherPointDoesntMeetConfidence(keypoints[leftJoint].score,keypoints[rightJoint].score,minConfidence)||result.push([keypoints[leftJoint],keypoints[rightJoint]]),result),[])}exports2.getAdjacentKeyPoints=getAdjacentKeyPoints;var{NEGATIVE_INFINITY,POSITIVE_INFINITY}=Number;function getBoundingBox(keypoints){return keypoints.reduce(({maxX,maxY,minX,minY},{position:{x,y}})=>({maxX:Math.max(maxX,x),maxY:Math.max(maxY,y),minX:Math.min(minX,x),minY:Math.min(minY,y)}),{maxX:NEGATIVE_INFINITY,maxY:NEGATIVE_INFINITY,minX:POSITIVE_INFINITY,minY:POSITIVE_INFINITY})}exports2.getBoundingBox=getBoundingBox;function getBoundingBoxPoints(keypoints){let{minX,minY,maxX,maxY}=getBoundingBox(keypoints);return[{x:minX,y:minY},{x:maxX,y:minY},{x:maxX,y:maxY},{x:minX,y:maxY}]}exports2.getBoundingBoxPoints=getBoundingBoxPoints;async function toTensorBuffers3D(tensors){return Promise.all(tensors.map(tensor=>tensor.buffer()))}exports2.toTensorBuffers3D=toTensorBuffers3D;function scalePose(pose,scaleY,scaleX){return{score:pose.score,keypoints:pose.keypoints.map(({score,part,position})=>({score,part,position:{x:position.x*scaleX,y:position.y*scaleY}}))}}exports2.scalePose=scalePose;function resizeTo(image3,[targetH,targetW]){let input=image3.squeeze(0),resized=input.resizeBilinear([targetH,targetW]);return input.dispose(),resized}exports2.resizeTo=resizeTo;function scaleAndFlipPoses(poses,[height,width],[inputResolutionHeight,inputResolutionWidth]){let scaledPoses=poses.map(pose=>scalePose(pose,height/inputResolutionHeight,width/inputResolutionWidth));return scaledPoses}exports2.scaleAndFlipPoses=scaleAndFlipPoses}),require_modelPoseNet=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),modelBase=__toModule(require_modelBase()),decodeMultiple=__toModule(require_decodeMultiple()),decodePose=__toModule(require_decodePose()),util=__toModule(require_util2());async function estimateMultiple(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],allTensorBuffers=await util.toTensorBuffers3D([res.heatmapScores,res.offsets,res.displacementFwd,res.displacementBwd]),scoresBuffer=allTensorBuffers[0],offsetsBuffer=allTensorBuffers[1],displacementsFwdBuffer=allTensorBuffers[2],displacementsBwdBuffer=allTensorBuffers[3],poses=await decodeMultiple.decodeMultiplePoses(scoresBuffer,offsetsBuffer,displacementsFwdBuffer,displacementsBwdBuffer,config2),scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}async function estimateSingle(input,res,config2){return new Promise(async resolve=>{let height=input.shape[1],width=input.shape[2],pose=await decodePose.decodeSinglePose(res.heatmapScores,res.offsets,config2),poses=[pose],scaled=util.scaleAndFlipPoses(poses,[height,width],[config2.body.inputSize,config2.body.inputSize]);resolve(scaled)})}var PoseNet=class{constructor(model){this.baseModel=model}async estimatePoses(input,config2){let resized=util.resizeTo(input,[config2.body.inputSize,config2.body.inputSize]),res=this.baseModel.predict(resized,config2),poses=config2.body.maxDetections<2?await estimateSingle(input,res,config2):await estimateMultiple(input,res,config2);return res.heatmapScores.dispose(),res.offsets.dispose(),res.displacementFwd.dispose(),res.displacementBwd.dispose(),resized.dispose(),poses}dispose(){this.baseModel.dispose()}};exports2.PoseNet=PoseNet;async function load2(config2){let model=await tf4.loadGraphModel(config2.body.modelPath),mobilenet=new modelBase.BaseModel(model);return log(`load model: ${config2.body.modelPath.match(/\/(.*)\./)[1]}`),new PoseNet(mobilenet)}exports2.load=load2}),require_posenet=__commonJS(exports2=>{var modelPoseNet=__toModule(require_modelPoseNet()),keypoints=__toModule(require_keypoints()),util=__toModule(require_util2());exports2.load=modelPoseNet.load;exports2.PoseNet=modelPoseNet.PoseNet;exports2.partChannels=keypoints.partChannels;exports2.partIds=keypoints.partIds;exports2.partNames=keypoints.partNames;exports2.poseChain=keypoints.poseChain;exports2.getAdjacentKeyPoints=util.getAdjacentKeyPoints;exports2.getBoundingBox=util.getBoundingBox;exports2.getBoundingBoxPoints=util.getBoundingBoxPoints;exports2.scaleAndFlipPoses=util.scaleAndFlipPoses;exports2.scalePose=util.scalePose}),require_handdetector=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var HandDetector=class{constructor(model,inputSize,anchorsAnnotated){this.model=model,this.anchors=anchorsAnnotated.map(anchor=>[anchor.x_center,anchor.y_center]),this.anchorsTensor=tf4.tensor2d(this.anchors),this.inputSizeTensor=tf4.tensor1d([inputSize,inputSize]),this.doubleInputSizeTensor=tf4.tensor1d([inputSize*2,inputSize*2])}normalizeBoxes(boxes){return tf4.tidy(()=>{let boxOffsets=tf4.slice(boxes,[0,0],[-1,2]),boxSizes=tf4.slice(boxes,[0,2],[-1,2]),boxCenterPoints=tf4.add(tf4.div(boxOffsets,this.inputSizeTensor),this.anchorsTensor),halfBoxSizes=tf4.div(boxSizes,this.doubleInputSizeTensor),startPoints=tf4.mul(tf4.sub(boxCenterPoints,halfBoxSizes),this.inputSizeTensor),endPoints=tf4.mul(tf4.add(boxCenterPoints,halfBoxSizes),this.inputSizeTensor);return tf4.concat2d([startPoints,endPoints],1)})}normalizeLandmarks(rawPalmLandmarks,index){return tf4.tidy(()=>{let landmarks=tf4.add(tf4.div(rawPalmLandmarks.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[index]);return tf4.mul(landmarks,this.inputSizeTensor)})}async getBoxes(input,config2){let batched=this.model.predict(input),predictions=batched.squeeze();batched.dispose();let scoresT=tf4.tidy(()=>tf4.sigmoid(tf4.slice(predictions,[0,0],[-1,1])).squeeze()),scores=scoresT.dataSync(),rawBoxes=tf4.slice(predictions,[0,1],[-1,4]),boxes=this.normalizeBoxes(rawBoxes);rawBoxes.dispose();let filteredT=await tf4.image.nonMaxSuppressionAsync(boxes,scores,config2.hand.maxHands,config2.hand.iouThreshold,config2.hand.scoreThreshold),filtered=filteredT.arraySync();scoresT.dispose(),filteredT.dispose();let hands=[];for(let index of filtered)if(scores[index]>=config2.hand.minConfidence){let matchingBox=tf4.slice(boxes,[index,0],[1,-1]),rawPalmLandmarks=tf4.slice(predictions,[index,5],[1,14]),palmLandmarks=tf4.tidy(()=>this.normalizeLandmarks(rawPalmLandmarks,index).reshape([-1,2]));rawPalmLandmarks.dispose(),hands.push({box:matchingBox,palmLandmarks,confidence:scores[index]})}return predictions.dispose(),boxes.dispose(),hands}async estimateHandBounds(input,config2){let inputHeight=input.shape[1],inputWidth=input.shape[2],image4=tf4.tidy(()=>input.resizeBilinear([config2.hand.inputSize,config2.hand.inputSize]).div(127.5).sub(1)),predictions=await this.getBoxes(image4,config2);image4.dispose();let hands=[];if(!predictions||predictions.length===0)return hands;for(let prediction of predictions){let boxes=prediction.box.dataSync(),startPoint=boxes.slice(0,2),endPoint=boxes.slice(2,4),palmLandmarks=prediction.palmLandmarks.arraySync();prediction.box.dispose(),prediction.palmLandmarks.dispose(),hands.push(scaleBoxCoordinates({startPoint,endPoint,palmLandmarks,confidence:prediction.confidence},[inputWidth/config2.hand.inputSize,inputHeight/config2.hand.inputSize]))}return hands}};exports2.HandDetector=HandDetector}),require_handpipeline=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm());var PALM_BOX_ENLARGE_FACTOR=5,HAND_BOX_ENLARGE_FACTOR=1.65,PALM_LANDMARK_IDS=[0,5,9,13,17,1,2],PALM_LANDMARKS_INDEX_OF_PALM_BASE=0,PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE=2,HandPipeline=class{constructor(handDetector,landmarkDetector,inputSize){this.handDetector=handDetector,this.landmarkDetector=landmarkDetector,this.inputSize=inputSize,this.storedBoxes=[],this.skipped=0,this.detectedHands=0}getBoxForPalmLandmarks(palmLandmarks,rotationMatrix){let rotatedPalmLandmarks=palmLandmarks.map(coord=>rotatePoint([...coord,1],rotationMatrix)),boxAroundPalm=this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);return enlargeBox(squarifyBox(boxAroundPalm),PALM_BOX_ENLARGE_FACTOR)}getBoxForHandLandmarks(landmarks){let boundingBox=this.calculateLandmarksBoundingBox(landmarks),boxAroundHand=enlargeBox(squarifyBox(boundingBox),HAND_BOX_ENLARGE_FACTOR);boxAroundHand.palmLandmarks=[];for(let i=0;i[scaleFactor[0]*(coord[0]-this.inputSize/2),scaleFactor[1]*(coord[1]-this.inputSize/2),scaleFactor[2]*coord[2]]),coordsRotationMatrix=buildRotationMatrix(angle,[0,0]),coordsRotated=coordsScaled.map(coord=>{let rotated=rotatePoint(coord,coordsRotationMatrix);return[...rotated,coord[2]]}),inverseRotationMatrix=invertTransformMatrix(rotationMatrix),boxCenter=[...getBoxCenter(box2),1],originalBoxCenter=[dot(boxCenter,inverseRotationMatrix[0]),dot(boxCenter,inverseRotationMatrix[1])];return coordsRotated.map(coord=>[coord[0]+originalBoxCenter[0],coord[1]+originalBoxCenter[1],coord[2]])}async estimateHands(image4,config2){let useFreshBox=!1,boxes;(this.skipped===0||this.skipped>config2.hand.skipFrames||!config2.hand.landmarks||!config2.videoOptimized)&&(boxes=await this.handDetector.estimateHandBounds(image4,config2),this.skipped=0),config2.videoOptimized&&this.skipped++,boxes&&boxes.length>0&&(boxes.length!==this.detectedHands&&this.detectedHands!==config2.hand.maxHands||!config2.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...boxes],this.storedBoxes.length>0&&(useFreshBox=!0));let hands=[];for(let i=0;i=config2.hand.minConfidence){let keypointsReshaped=tf4.reshape(keypoints,[-1,3]),rawCoords=keypointsReshaped.arraySync();keypoints.dispose(),keypointsReshaped.dispose();let coords=this.transformRawCoords(rawCoords,newBox,angle,rotationMatrix),nextBoundingBox=this.getBoxForHandLandmarks(coords);this.storedBoxes[i]=nextBoundingBox;let result={landmarks:coords,confidence,box:{topLeft:nextBoundingBox.startPoint,bottomRight:nextBoundingBox.endPoint}};hands.push(result)}else this.storedBoxes[i]=null;keypoints.dispose()}else{let enlarged=enlargeBox(squarifyBox(currentBox),HAND_BOX_ENLARGE_FACTOR),result={confidence:currentBox.confidence,box:{topLeft:enlarged.startPoint,bottomRight:enlarged.endPoint}};hands.push(result)}}return this.storedBoxes=this.storedBoxes.filter(a=>a!==null),this.detectedHands=hands.length,hands}calculateLandmarksBoundingBox(landmarks){let xs=landmarks.map(d=>d[0]),ys=landmarks.map(d=>d[1]),startPoint=[Math.min(...xs),Math.min(...ys)],endPoint=[Math.max(...xs),Math.max(...ys)];return{startPoint,endPoint}}};exports2.HandPipeline=HandPipeline}),require_anchors=__commonJS(exports2=>{exports2.anchors=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}]}),require_handpose=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),handdetector=__toModule(require_handdetector()),handpipeline=__toModule(require_handpipeline()),anchors=__toModule(require_anchors());var MESH_ANNOTATIONS={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},HandPose=class{constructor(handPipeline){this.handPipeline=handPipeline}static getAnnotations(){return MESH_ANNOTATIONS}async estimateHands(input,config2){let predictions=await this.handPipeline.estimateHands(input,config2);if(!predictions)return[];let hands=[];for(let prediction of predictions){let annotations={};if(prediction.landmarks)for(let key of Object.keys(MESH_ANNOTATIONS))annotations[key]=MESH_ANNOTATIONS[key].map(index=>prediction.landmarks[index]);let box=prediction.box?[Math.max(0,prediction.box.topLeft[0]),Math.max(0,prediction.box.topLeft[1]),Math.min(input.shape[2],prediction.box.bottomRight[0])-prediction.box.topLeft[0],Math.min(input.shape[1],prediction.box.bottomRight[1])-prediction.box.topLeft[1]]:0;hands.push({confidence:prediction.confidence,box,landmarks:prediction.landmarks,annotations})}return hands}};exports2.HandPose=HandPose;async function load2(config2){let[handDetectorModel,handPoseModel]=await Promise.all([config2.hand.enabled?tf4.loadGraphModel(config2.hand.detector.modelPath,{fromTFHub:config2.hand.detector.modelPath.includes("tfhub.dev")}):null,config2.hand.landmarks?tf4.loadGraphModel(config2.hand.skeleton.modelPath,{fromTFHub:config2.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),handDetector=new handdetector.HandDetector(handDetectorModel,config2.hand.inputSize,anchors.anchors),handPipeline=new handpipeline.HandPipeline(handDetector,handPoseModel,config2.hand.inputSize),handPose=new HandPose(handPipeline);return config2.hand.enabled&&log(`load model: ${config2.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),config2.hand.landmarks&&log(`load model: ${config2.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),handPose}exports2.load=load2}),require_gesture=__commonJS(exports2=>{exports2.body=res=>{if(!res)return[];let gestures=[];for(let i=0;ia.part==="leftWrist"),rightWrist=res[i].keypoints.find(a=>a.part==="rightWrist"),nose=res[i].keypoints.find(a=>a.part==="nose");nose&&leftWrist&&rightWrist&&leftWrist.position.ya.part==="leftShoulder"),rightShoulder=res[i].keypoints.find(a=>a.part==="rightShoulder");leftShoulder&&rightShoulder&&gestures.push({body:i,gesture:`leaning ${leftShoulder.position.y>rightShoulder.position.y?"left":"right"}`})}return gestures};exports2.face=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let eyeFacing=res[i].mesh[35][2]-res[i].mesh[263][2];Math.abs(eyeFacing)<10?gestures.push({face:i,gesture:"facing camera"}):gestures.push({face:i,gesture:`facing ${eyeFacing<0?"right":"left"}`});let openLeft=Math.abs(res[i].mesh[374][1]-res[i].mesh[386][1])/Math.abs(res[i].mesh[443][1]-res[i].mesh[450][1]);openLeft<.2&&gestures.push({face:i,gesture:"blink left eye"});let openRight=Math.abs(res[i].mesh[145][1]-res[i].mesh[159][1])/Math.abs(res[i].mesh[223][1]-res[i].mesh[230][1]);openRight<.2&&gestures.push({face:i,gesture:"blink right eye"});let mouthOpen=Math.min(100,500*Math.abs(res[i].mesh[13][1]-res[i].mesh[14][1])/Math.abs(res[i].mesh[10][1]-res[i].mesh[152][1]));mouthOpen>10&&gestures.push({face:i,gesture:`mouth ${Math.trunc(mouthOpen)}% open`});let chinDepth=res[i].mesh[152][2];Math.abs(chinDepth)>10&&gestures.push({face:i,gesture:`head ${chinDepth<0?"up":"down"}`})}return gestures};exports2.hand=res=>{if(!res)return[];let gestures=[];for(let i=0;i0){let closest=fingers.reduce((best,a)=>best.position[2]best.position[1]{var WebGLProgram=function(gl,vertexSource,fragmentSource){let _collect=function(source,prefix,collection){let r=new RegExp("\\b"+prefix+" \\w+ (\\w+)","ig");source.replace(r,(match,name)=>(collection[name]=0,match))},_compile=function(source,type){let shader=gl.createShader(type);if(gl.shaderSource(shader,source),gl.compileShader(shader),!gl.getShaderParameter(shader,gl.COMPILE_STATUS))throw new Error("Filter: GL compile failed",gl.getShaderInfoLog(shader));return shader};this.uniform={},this.attribute={};let _vsh=_compile(vertexSource,gl.VERTEX_SHADER),_fsh=_compile(fragmentSource,gl.FRAGMENT_SHADER);if(this.id=gl.createProgram(),gl.attachShader(this.id,_vsh),gl.attachShader(this.id,_fsh),gl.linkProgram(this.id),!gl.getProgramParameter(this.id,gl.LINK_STATUS))throw new Error("Filter: GL link failed",gl.getProgramInfoLog(this.id));gl.useProgram(this.id),_collect(vertexSource,"attribute",this.attribute);for(let a in this.attribute)this.attribute[a]=gl.getAttribLocation(this.id,a);_collect(vertexSource,"uniform",this.uniform),_collect(fragmentSource,"uniform",this.uniform);for(let u in this.uniform)this.uniform[u]=gl.getUniformLocation(this.id,u)},WebGLImageFilter=function(params){params||(params={});let _drawCount=0,_sourceTexture=null,_lastInChain=!1,_currentFramebufferIndex=-1,_tempFramebuffers=[null,null],_filterChain=[],_width=-1,_height=-1,_vertexBuffer=null,_currentProgram=null,_canvas=params.canvas||document.createElement("canvas"),_shaderProgramCache={},gl=_canvas.getContext("webgl");if(!gl)throw new Error("Filter: getContext() failed");this.addFilter=function(name){let args=Array.prototype.slice.call(arguments,1),filter=_filter[name];_filterChain.push({func:filter,args})},this.reset=function(){_filterChain=[]},this.apply=function(image3){if(_resize(image3.width,image3.height),_drawCount=0,_sourceTexture||(_sourceTexture=gl.createTexture()),gl.bindTexture(gl.TEXTURE_2D,_sourceTexture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image3),_filterChain.length===0)return _draw(),_canvas;for(let i=0;i<_filterChain.length;i++){_lastInChain=i===_filterChain.length-1;let f=_filterChain[i];f.func.apply(this,f.args||[])}return _canvas};let _resize=function(width,height){if(width===_width&&height===_height)return;if(_canvas.width=width,_width=width,_canvas.height=height,_height=height,!_vertexBuffer){let vertices=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);_vertexBuffer=gl.createBuffer(),gl.bindBuffer(gl.ARRAY_BUFFER,_vertexBuffer),gl.bufferData(gl.ARRAY_BUFFER,vertices,gl.STATIC_DRAW),gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}gl.viewport(0,0,_width,_height),_tempFramebuffers=[null,null]},_getTempFramebuffer=function(index){return _tempFramebuffers[index]=_tempFramebuffers[index]||_createFramebufferTexture(_width,_height),_tempFramebuffers[index]},_createFramebufferTexture=function(width,height){let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);let renderbuffer=gl.createRenderbuffer();gl.bindRenderbuffer(gl.RENDERBUFFER,renderbuffer);let texture=gl.createTexture();return gl.bindTexture(gl.TEXTURE_2D,texture),gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,width,height,0,gl.RGBA,gl.UNSIGNED_BYTE,null),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0),gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),{fbo,texture}},_draw=function(flags){let source=null,target=null,flipY=!1;_drawCount===0?source=_sourceTexture:source=_getTempFramebuffer(_currentFramebufferIndex).texture,_drawCount++,_lastInChain&&!(flags&DRAW.INTERMEDIATE)?(target=null,flipY=_drawCount%2===0):(_currentFramebufferIndex=(_currentFramebufferIndex+1)%2,target=_getTempFramebuffer(_currentFramebufferIndex).fbo),gl.bindTexture(gl.TEXTURE_2D,source),gl.bindFramebuffer(gl.FRAMEBUFFER,target),gl.uniform1f(_currentProgram.uniform.flipY,flipY?-1:1),gl.drawArrays(gl.TRIANGLES,0,6)},_compileShader=function(fragmentSource){if(_shaderProgramCache[fragmentSource])return _currentProgram=_shaderProgramCache[fragmentSource],gl.useProgram(_currentProgram.id),_currentProgram;_currentProgram=new WebGLProgram(gl,SHADER.VERTEX_IDENTITY,fragmentSource);let floatSize=Float32Array.BYTES_PER_ELEMENT,vertSize=4*floatSize;return gl.enableVertexAttribArray(_currentProgram.attribute.pos),gl.vertexAttribPointer(_currentProgram.attribute.pos,2,gl.FLOAT,!1,vertSize,0*floatSize),gl.enableVertexAttribArray(_currentProgram.attribute.uv),gl.vertexAttribPointer(_currentProgram.attribute.uv,2,gl.FLOAT,!1,vertSize,2*floatSize),_shaderProgramCache[fragmentSource]=_currentProgram,_currentProgram},DRAW={INTERMEDIATE:1},SHADER={};SHADER.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),SHADER.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` `);let _filter={};_filter.colorMatrix=function(matrix){let m=new Float32Array(matrix);m[4]/=255,m[9]/=255,m[14]/=255,m[19]/=255;let shader=m[18]===1&&m[3]===0&&m[8]===0&&m[13]===0&&m[15]===0&&m[16]===0&&m[17]===0&&m[19]===0?_filter.colorMatrix.SHADER.WITHOUT_ALPHA:_filter.colorMatrix.SHADER.WITH_ALPHA,program=_compileShader(shader);gl.uniform1fv(program.uniform.m,m),_draw()},_filter.colorMatrix.SHADER={},_filter.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),_filter.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` `),_filter.brightness=function(brightness){let b=(brightness||0)+1;_filter.colorMatrix([b,0,0,0,0,0,b,0,0,0,0,0,b,0,0,0,0,0,1,0])},_filter.saturation=function(amount){let x=(amount||0)*2/3+1,y=(x-1)*-.5;_filter.colorMatrix([x,y,y,0,0,y,x,y,0,0,y,y,x,0,0,0,0,0,1,0])},_filter.desaturate=function(){_filter.saturation(-1)},_filter.contrast=function(amount){let v=(amount||0)+1,o=-128*(v-1);_filter.colorMatrix([v,0,0,0,o,0,v,0,0,o,0,0,v,0,o,0,0,0,1,0])},_filter.negative=function(){_filter.contrast(-2)},_filter.hue=function(rotation){rotation=(rotation||0)/180*Math.PI;let cos=Math.cos(rotation),sin=Math.sin(rotation),lumR=.213,lumG=.715,lumB=.072;_filter.colorMatrix([lumR+cos*(1-lumR)+sin*-lumR,lumG+cos*-lumG+sin*-lumG,lumB+cos*-lumB+sin*(1-lumB),0,0,lumR+cos*-lumR+sin*.143,lumG+cos*(1-lumG)+sin*.14,lumB+cos*-lumB+sin*-.283,0,0,lumR+cos*-lumR+sin*-(1-lumR),lumG+cos*-lumG+sin*lumG,lumB+cos*(1-lumB)+sin*lumB,0,0,0,0,0,1,0])},_filter.desaturateLuminance=function(){_filter.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},_filter.sepia=function(){_filter.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},_filter.brownie=function(){_filter.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},_filter.vintagePinhole=function(){_filter.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},_filter.kodachrome=function(){_filter.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},_filter.technicolor=function(){_filter.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},_filter.polaroid=function(){_filter.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},_filter.shiftToBGR=function(){_filter.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},_filter.convolution=function(matrix){let m=new Float32Array(matrix),pixelSizeX=1/_width,pixelSizeY=1/_height,program=_compileShader(_filter.convolution.SHADER);gl.uniform1fv(program.uniform.m,m),gl.uniform2f(program.uniform.px,pixelSizeX,pixelSizeY),_draw()},_filter.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),_filter.detectEdges=function(){_filter.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},_filter.sobelX=function(){_filter.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},_filter.sobelY=function(){_filter.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},_filter.sharpen=function(amount){let a=amount||1;_filter.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},_filter.emboss=function(size){let s=size||1;_filter.convolution.call(this,[-2*s,-1*s,0,-1*s,1,1*s,0,1*s,2*s])},_filter.blur=function(size){let blurSizeX=size/7/_width,blurSizeY=size/7/_height,program=_compileShader(_filter.blur.SHADER);gl.uniform2f(program.uniform.px,0,blurSizeY),_draw(DRAW.INTERMEDIATE),gl.uniform2f(program.uniform.px,blurSizeX,0),_draw()},_filter.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),_filter.pixelate=function(size){let blurSizeX=size/_width,blurSizeY=size/_height,program=_compileShader(_filter.pixelate.SHADER);gl.uniform2f(program.uniform.size,blurSizeX,blurSizeY),_draw()},_filter.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)};exports2.Canvas=WebGLImageFilter}),require_image=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tf3=__toModule(require_tfjs_esm()),tf=__toModule(require_tfjs_esm()),config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!tf.findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);tf.setWebGLContext(2,gl);let ctx=new tf.GPGPUContext(gl);tf.registerBackend(config.name,()=>new tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` +`)};exports2.Canvas=WebGLImageFilter}),require_image=__commonJS(exports2=>{var tf4=__toModule(require_tfjs_esm()),fxImage=__toModule(require_imagefx()),inCanvas=null,outCanvas=null;function process3(input,config2){let tensor;if(input instanceof tf4.Tensor)tensor=tf4.clone(input);else{let originalWidth=input.naturalWidth||input.videoWidth||input.width||input.shape&&input.shape[1]>0,originalHeight=input.naturalHeight||input.videoHeight||input.height||input.shape&&input.shape[2]>0,targetWidth=originalWidth,targetHeight=originalHeight;if(config2.filter.width>0?targetWidth=config2.filter.width:config2.filter.height>0&&(targetWidth=originalWidth*(config2.filter.height/originalHeight)),config2.filter.height>0?targetHeight=config2.filter.height:config2.filter.width>0&&(targetHeight=originalHeight*(config2.filter.width/originalWidth)),!targetWidth||!targetHeight)return log("Human: invalid input",input),null;(!inCanvas||inCanvas.width!==targetWidth||inCanvas.height!==targetHeight)&&(inCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(targetWidth,targetHeight):document.createElement("canvas"),inCanvas.width!==targetWidth&&(inCanvas.width=targetWidth),inCanvas.height!==targetHeight&&(inCanvas.height=targetHeight));let ctx=inCanvas.getContext("2d");if(input instanceof ImageData?ctx.putImageData(input,0,0):ctx.drawImage(input,0,0,originalWidth,originalHeight,0,0,inCanvas.width,inCanvas.height),config2.filter.enabled){(!this.fx||!outCanvas||inCanvas.width!==outCanvas.width||inCanvas.height!==outCanvas.height)&&(outCanvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(inCanvas.width,inCanvas.height):document.createElement("canvas"),outCanvas.width!==inCanvas.width&&(outCanvas.width=inCanvas.width),outCanvas.height!==inCanvas.height&&(outCanvas.height=inCanvas.height),this.fx=tf4.ENV.flags.IS_BROWSER?new fxImage.Canvas({canvas:outCanvas}):null),this.fx.reset(),this.fx.addFilter("brightness",config2.filter.brightness),config2.filter.contrast!==0&&this.fx.addFilter("contrast",config2.filter.contrast),config2.filter.sharpness!==0&&this.fx.addFilter("sharpen",config2.filter.sharpness),config2.filter.blur!==0&&this.fx.addFilter("blur",config2.filter.blur),config2.filter.saturation!==0&&this.fx.addFilter("saturation",config2.filter.saturation),config2.filter.hue!==0&&this.fx.addFilter("hue",config2.filter.hue),config2.filter.negative&&this.fx.addFilter("negative"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.vintage&&this.fx.addFilter("brownie"),config2.filter.sepia&&this.fx.addFilter("sepia"),config2.filter.kodachrome&&this.fx.addFilter("kodachrome"),config2.filter.technicolor&&this.fx.addFilter("technicolor"),config2.filter.polaroid&&this.fx.addFilter("polaroid"),config2.filter.pixelate!==0&&this.fx.addFilter("pixelate",config2.filter.pixelate),this.fx.apply(inCanvas);let gl=!1;if(gl){let glBuffer=new Uint8Array(outCanvas.width*outCanvas.height*4),pixBuffer=new Uint8Array(outCanvas.width*outCanvas.height*3);gl.readPixels(0,0,outCanvas.width,outCanvas.height,gl.RGBA,gl.UNSIGNED_BYTE,glBuffer);let i=0;for(let y=outCanvas.height-1;y>=0;y--)for(let x=0;xHuman});function log(...msg){let dt=new Date,ts=`${dt.getHours().toString().padStart(2,"0")}:${dt.getMinutes().toString().padStart(2,"0")}:${dt.getSeconds().toString().padStart(2,"0")}.${dt.getMilliseconds().toString().padStart(3,"0")}`;msg&&console.log(ts,"Human:",...msg)}var tf3=__toModule(require_tfjs_esm()),tf=__toModule(require_tfjs_esm()),config={name:"humangl",priority:99,canvas:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function register(){if(!tf.findBackend(config.name)){config.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(config.width,config.height):document.createElement("canvas");let gl=config.canvas.getContext("webgl2",config.webGLattr);tf.setWebGLContext(2,gl);let ctx=new tf.GPGPUContext(gl);tf.registerBackend(config.name,()=>new tf.MathBackendWebGL(ctx),config.priority);let kernels=tf.getKernelsForBackend("webgl");kernels.forEach(kernelConfig=>{let newKernelConfig={...kernelConfig,backendName:config.name};tf.registerKernel(newKernelConfig)}),tf.ENV.set("WEBGL_VERSION",2),tf.ENV.set("WEBGL_MAX_TEXTURE_SIZE",gl.getParameter(gl.MAX_TEXTURE_SIZE)),tf.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0)}}var facemesh=__toModule(require_facemesh()),age=__toModule(require_age()),gender=__toModule(require_gender()),emotion=__toModule(require_emotion()),embedding=__toModule(require_embedding()),posenet=__toModule(require_posenet()),tf2=__toModule(require_tfjs_esm());function getBoxSize(box){return[Math.abs(box.endPoint[0]-box.startPoint[0]),Math.abs(box.endPoint[1]-box.startPoint[1])]}function getBoxCenter(box){return[box.startPoint[0]+(box.endPoint[0]-box.startPoint[0])/2,box.startPoint[1]+(box.endPoint[1]-box.startPoint[1])/2]}function cutBoxFromImageAndResize(box,image3,cropSize){let h=image3.shape[1],w=image3.shape[2],boxes=[[box.startPoint[1]/h,box.startPoint[0]/w,box.endPoint[1]/h,box.endPoint[0]/w]];return tf2.image.cropAndResize(image3,boxes,[0],cropSize)}function scaleBoxCoordinates(box,factor){let startPoint=[box.startPoint[0]*factor[0],box.startPoint[1]*factor[1]],endPoint=[box.endPoint[0]*factor[0],box.endPoint[1]*factor[1]],palmLandmarks=box.palmLandmarks.map(coord=>{let scaledCoord=[coord[0]*factor[0],coord[1]*factor[1]];return scaledCoord});return{startPoint,endPoint,palmLandmarks,confidence:box.confidence}}function enlargeBox(box,factor=1.5){let center=getBoxCenter(box),size=getBoxSize(box),newHalfSize=[factor*size[0]/2,factor*size[1]/2],startPoint=[center[0]-newHalfSize[0],center[1]-newHalfSize[1]],endPoint=[center[0]+newHalfSize[0],center[1]+newHalfSize[1]];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function squarifyBox(box){let centers=getBoxCenter(box),size=getBoxSize(box),maxEdge=Math.max(...size),halfSize=maxEdge/2,startPoint=[centers[0]-halfSize,centers[1]-halfSize],endPoint=[centers[0]+halfSize,centers[1]+halfSize];return{startPoint,endPoint,palmLandmarks:box.palmLandmarks}}function normalizeRadians(angle){return angle-2*Math.PI*Math.floor((angle+Math.PI)/(2*Math.PI))}function computeRotation(point1,point2){let radians=Math.PI/2-Math.atan2(-(point2[1]-point1[1]),point2[0]-point1[0]);return normalizeRadians(radians)}var buildTranslationMatrix=(x,y)=>[[1,0,x],[0,1,y],[0,0,1]];function dot(v1,v2){let product=0;for(let i=0;iconfig_default});var config_default={backend:"webgl",wasmPath:"../assets/",async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,rotation:!1,maxFaces:10,skipFrames:11,minConfidence:.5,iouThreshold:.2,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192,returnRawData:!1},iris:{enabled:!0,modelPath:"../models/iris.json",inputSize:64},age:{enabled:!0,modelPath:"../models/age-ssrnet-imdb.json",inputSize:64,skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender-ssrnet-imdb.json",inputSize:64,skipFrames:41},emotion:{enabled:!0,inputSize:64,minConfidence:.2,skipFrames:21,modelPath:"../models/emotion-large.json"},embedding:{enabled:!1,inputSize:112,modelPath:"../models/mobilefacenet.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputSize:257,maxDetections:10,scoreThreshold:.5,nmsRadius:20,outputStride:16,modelType:"MobileNet"},hand:{enabled:!0,rotation:!1,inputSize:256,skipFrames:12,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}},face=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,7 +731,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}}; +2Q==`;var version="0.9.18",now=()=>typeof performance!="undefined"?performance.now():parseInt(Number(process.hrtime.bigint())/1e3/1e3);function mergeDeep(...objects){let isObject=obj=>obj&&typeof obj=="object";return objects.reduce((prev,obj)=>(Object.keys(obj||{}).forEach(key=>{let pVal=prev[key],oVal=obj[key];Array.isArray(pVal)&&Array.isArray(oVal)?prev[key]=pVal.concat(...oVal):isObject(pVal)&&isObject(oVal)?prev[key]=mergeDeep(pVal,oVal):prev[key]=oVal}),prev),{})}var Human=class{constructor(userConfig={}){this.tf=tf3,this.version=version,this.config=mergeDeep(config_default,userConfig),this.fx=null,this.state="idle",this.numTensors=0,this.analyzeMemoryLeaks=!1,this.checkSanity=!1,this.firstRun=!0,this.perf={},this.models={facemesh:null,posenet:null,handpose:null,iris:null,age:null,gender:null,emotion:null},this.facemesh=facemesh,this.age=age,this.gender=gender,this.emotion=emotion,this.body=posenet,this.hand=handpose}profile(){return this.config.profile?profile.data:{}}analyze(...msg){if(!this.analyzeMemoryLeaks)return;let current=tf3.engine().state.numTensors,previous=this.numTensors;this.numTensors=current;let leaked=current-previous;leaked!==0&&log(...msg,leaked)}sanity(input){if(!this.checkSanity)return null;if(!input)return"input is not defined";if(tf3.ENV.flags.IS_NODE&&!(input instanceof tf3.Tensor))return"input must be a tensor";try{tf3.getBackend()}catch(e){return"backend not loaded"}return null}simmilarity(embedding1,embedding2){return this.config.face.embedding.enabled?embedding.simmilarity(embedding1,embedding2):0}async load(userConfig){this.state="load";let timeStamp=now();userConfig&&(this.config=mergeDeep(this.config,userConfig)),this.firstRun&&(log(`version: ${this.version} TensorFlow/JS version: ${tf3.version_core}`),await this.checkBackend(!0),tf3.ENV.flags.IS_BROWSER&&(log("configuration:",this.config),log("tf flags:",tf3.ENV.flags)),this.firstRun=!1),this.config.async?[this.models.facemesh,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.posenet,this.models.handpose]=await Promise.all([this.models.facemesh||(this.config.face.enabled?facemesh.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?age.load(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?gender.load(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?emotion.load(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?embedding.load(this.config):null),this.models.posenet||(this.config.body.enabled?posenet.load(this.config):null),this.models.handpose||(this.config.hand.enabled?handpose.load(this.config):null)]):(this.config.face.enabled&&!this.models.facemesh&&(this.models.facemesh=await facemesh.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await age.load(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await gender.load(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await emotion.load(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await embedding.load(this.config)),this.config.body.enabled&&!this.models.posenet&&(this.models.posenet=await posenet.load(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await handpose.load(this.config)));let current=Math.trunc(now()-timeStamp);current>(this.perf.load||0)&&(this.perf.load=current)}async checkBackend(force){if(this.config.backend&&this.config.backend!==""&&force||tf3.getBackend()!==this.config.backend){let timeStamp=now();if(this.state="backend",log("setting backend:",this.config.backend),this.config.backend==="wasm"){log("settings wasm path:",this.config.wasmPath),tf3.setWasmPaths(this.config.wasmPath);let simd=await tf3.env().getAsync("WASM_HAS_SIMD_SUPPORT");simd||log("warning: wasm simd support is not enabled")}if(this.config.backend==="humangl"&&(log("registering humangl backend"),register()),await tf3.setBackend(this.config.backend),tf3.enableProdMode(),tf3.getBackend()==="webgl"){this.config.deallocate&&(log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),tf3.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1)),tf3.ENV.set("WEBGL_FORCE_F16_TEXTURES",!0),tf3.ENV.set("WEBGL_PACK_DEPTHWISECONV",!0);let gl=await tf3.backend().getGPGPUContext().gl;log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`)}await tf3.ready(),this.perf.backend=Math.trunc(now()-timeStamp)}}async detectFace(input){let timeStamp,ageRes,genderRes,emotionRes,embeddingRes,faceRes=[];this.state="run:face",timeStamp=now();let faces=await this.models.facemesh.estimateFaces(input,this.config);this.perf.face=Math.trunc(now()-timeStamp);for(let face3 of faces){if(this.analyze("Get Face"),!face3.image||face3.image.isDisposedInternal){log("Face object is disposed:",face3.image);continue}this.analyze("Start Age:"),this.config.async?ageRes=this.config.face.age.enabled?age.predict(face3.image,this.config):{}:(this.state="run:age",timeStamp=now(),ageRes=this.config.face.age.enabled?await age.predict(face3.image,this.config):{},this.perf.age=Math.trunc(now()-timeStamp)),this.analyze("Start Gender:"),this.config.async?genderRes=this.config.face.gender.enabled?gender.predict(face3.image,this.config):{}:(this.state="run:gender",timeStamp=now(),genderRes=this.config.face.gender.enabled?await gender.predict(face3.image,this.config):{},this.perf.gender=Math.trunc(now()-timeStamp)),this.analyze("Start Emotion:"),this.config.async?emotionRes=this.config.face.emotion.enabled?emotion.predict(face3.image,this.config):{}:(this.state="run:emotion",timeStamp=now(),emotionRes=this.config.face.emotion.enabled?await emotion.predict(face3.image,this.config):{},this.perf.emotion=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.analyze("Start Embedding:"),this.config.async?embeddingRes=this.config.face.embedding.enabled?embedding.predict(face3.image,this.config):{}:(this.state="run:embedding",timeStamp=now(),embeddingRes=this.config.face.embedding.enabled?await embedding.predict(face3.image,this.config):{},this.perf.embedding=Math.trunc(now()-timeStamp)),this.analyze("End Emotion:"),this.config.async&&([ageRes,genderRes,emotionRes,embeddingRes]=await Promise.all([ageRes,genderRes,emotionRes,embeddingRes])),this.analyze("Finish Face:"),face3.image.dispose();let irisSize=face3.annotations.leftEyeIris&&face3.annotations.rightEyeIris?11.7*Math.max(Math.abs(face3.annotations.leftEyeIris[3][0]-face3.annotations.leftEyeIris[1][0]),Math.abs(face3.annotations.rightEyeIris[4][1]-face3.annotations.rightEyeIris[2][1])):0;faceRes.push({confidence:face3.confidence,box:face3.box,mesh:face3.mesh,boxRaw:face3.boxRaw,meshRaw:face3.meshRaw,annotations:face3.annotations,age:ageRes.age,gender:genderRes.gender,genderConfidence:genderRes.confidence,emotion:emotionRes,embedding:embeddingRes,iris:irisSize!==0?Math.trunc(irisSize)/100:0}),this.analyze("End Face")}return this.analyze("End FaceMesh:"),this.config.async&&(this.perf.face&&delete this.perf.face,this.perf.age&&delete this.perf.age,this.perf.gender&&delete this.perf.gender,this.perf.emotion&&delete this.perf.emotion),faceRes}async image(input,userConfig={}){this.state="image",this.config=mergeDeep(this.config,userConfig);let process3=image2.process(input,this.config);return process3.tensor.dispose(),process3.canvas}async detect(input,userConfig={}){return new Promise(async resolve=>{this.state="config";let timeStamp;this.config=mergeDeep(this.config,userConfig),this.state="check";let error=this.sanity(input);error&&(log(error,input),resolve({error}));let poseRes,handRes,faceRes,timeStart=now();await this.checkBackend(),await this.load(),this.config.scoped&&tf3.engine().startScope(),this.analyze("Start Scope:"),timeStamp=now();let process3=image2.process(input,this.config);if(!process3||!process3.tensor){log("could not convert input to tensor"),resolve({error:"could not convert input to tensor"});return}this.perf.image=Math.trunc(now()-timeStamp),this.analyze("Get Image:"),this.config.async?(faceRes=this.config.face.enabled?this.detectFace(process3.tensor):[],this.perf.face&&delete this.perf.face):(this.state="run:face",timeStamp=now(),faceRes=this.config.face.enabled?await this.detectFace(process3.tensor):[],this.perf.face=Math.trunc(now()-timeStamp)),this.analyze("Start Body:"),this.config.async?(poseRes=this.config.body.enabled?this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body&&delete this.perf.body):(this.state="run:body",timeStamp=now(),poseRes=this.config.body.enabled?await this.models.posenet.estimatePoses(process3.tensor,this.config):[],this.perf.body=Math.trunc(now()-timeStamp)),this.analyze("End Body:"),this.analyze("Start Hand:"),this.config.async?(handRes=this.config.hand.enabled?this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand&&delete this.perf.hand):(this.state="run:hand",timeStamp=now(),handRes=this.config.hand.enabled?await this.models.handpose.estimateHands(process3.tensor,this.config):[],this.perf.hand=Math.trunc(now()-timeStamp)),this.config.async&&([faceRes,poseRes,handRes]=await Promise.all([faceRes,poseRes,handRes])),process3.tensor.dispose(),this.config.scoped&&tf3.engine().endScope(),this.analyze("End Scope:");let gestureRes=[];this.config.gesture.enabled&&(timeStamp=now(),gestureRes=[...gesture.face(faceRes),...gesture.body(poseRes),...gesture.hand(handRes)],this.config.async?this.perf.gesture&&delete this.perf.gesture:this.perf.gesture=Math.trunc(now()-timeStamp)),this.perf.total=Math.trunc(now()-timeStart),this.state="idle",resolve({face:faceRes,body:poseRes,hand:handRes,gesture:gestureRes,performance:this.perf,canvas:process3.canvas})})}async warmup(userConfig){let b64toBlob=(base64,type="application/octet-stream")=>fetch(`data:${type};base64,${base64}`).then(res=>res.blob());userConfig&&(this.config=mergeDeep(this.config,userConfig));let video=this.config.videoOptimized;this.config.videoOptimized=!1;let blob;switch(this.config.warmup){case"face":blob=await b64toBlob(face);break;case"full":blob=await b64toBlob(body);break;default:blob=null}if(!blob)return null;let bitmap=await createImageBitmap(blob),t0=now(),warmup=await this.detect(bitmap,config_exports),t1=now();return bitmap.close(),log("Warmup",this.config.warmup,t1-t0,warmup),this.config.videoOptimized=video,warmup}}; /** * @license * Copyright 2020 Google LLC. All Rights Reserved. diff --git a/dist/human.node.js.map b/dist/human.node.js.map index 96f523ab..e959506a 100644 --- a/dist/human.node.js.map +++ b/dist/human.node.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../src/tfjs/tf-node.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "../src/human.js", "../src/tfjs/backend.js", "../src/human.js", "../src/hand/box.js", "../src/hand/util.js", "../src/human.js", "../config.js", "../config.js", "../src/sample.js", "../src/human.js"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node';\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk\nJyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX/2wBDAQwNDREPESESEiFFLicuRUVFRUVF\nRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX/wAARCASwBLADASIA\nAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAEDAgQFBgf/xABDEAEAAgECBAMECQIDBgUFAQAA\nAQIDBBEFEiExE0FRBiJhcRQjMkJSgZGhsWLBJDNyFSVTY3OSNEPR4fAHFjWCokT/xAAYAQEAAwEA\nAAAAAAAAAAAAAAAAAQIDBP/EACARAQEBAQADAQEBAQEBAAAAAAABAhEDITFBEjJRIhP/2gAMAwEA\nAhEDEQA/APqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAKNTq8OkxzfNkisQC8eb1XtRNbzXT4q7eU2nu0MntRq/D8StMccvW29ZmdvgjsTyvZjxOLj\n+s8WLxn8TFPXs6Oj9oct7c14rkxz22nrB2I49KOdTjelmszfmpMeUxv/AA28OqwZ4icWWtt/SUi4\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmdo3nsPNe0Pt\nFh09Z0+DNWL7+9O/7A3eJcZppsV5raI27esvH6jX5ddM25p79Ilo59VbUZOe2Tm/PeGvfPfT2iKR\nPLv1+DO678XmW/a97U6TtOyzTbTF538/T9WjTNecm9a7126tqk3rSYxY5ta1plRZqZNXGjyZcPXl\nmZmsx+qjBrsuO16xM7eXRt04JrdTltk5OWJnfaWf0a2lty5MdZnfzSn+WOHiOutFpjHa9e8bQ2fp\n+alYy462pk7zXbuxjPesbRS0f6ZZV1ET1tErzXFLHo+A+1ddZf6NrI8PJHa1vN6iJi0bxMTHwfOa\nzhzd61v1846utwniM6DUdb3nBaNrVmd9vjC/ZVePYirBqMWppz4rxaPgtEAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAItaK1m09ojcHnvarjM8P0vh49+a/eY8ng9D\nh1fGM1rxjtGPfvbzdbjuTJxHX48cTPNltM/KsS9Dw7S49Jp6UpHaGe2vjz1y9J7LYK13vHWe7bj2\nex1tvM80ekuxW3RnW3Vm6P5jRx8H0+OYmMcb+bapo8GKPdpC6bQwtdHU8JpWkdJ/JweL6e23iU67\nd4dubSqyVi9Zi0bwIs68XGp36TtEq7ZJmZmevzdbifCKWtbJinkt6eTgZPFw32t+sRurbWVzxs1y\nRv6T8V1NZNPtfq0seTm+Kevr+SZuxXjvaPiV8N4viycto9HseG6+uu08W6Rkj7UPmFck1tE1nlmP\nLd3eA8V8HVVi1pjq6Ma/pnqce/ERMTETHaUrKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAADW19+TQ5p/p2bLS4v04Zmt5VjeQeJ4bjnLqsupv+Ka1+ERLv4reTmcNxcuC\nvy3l0qdI2hlr66sT02ot0ZV7qqrInruzrVZLGSZ37JjqgYTG0K5lbaFVhDT1Ub456RPweY4hixWi\neSdpjvD1eWejz3FNHWYtkpvFo9EIseb3tS3SerOms22rfpPqZKzvvHSYUz70TExG6Gdbs2rljeJ/\nMx5L0vEzPaelnOi98c9J2bFNTFpit47+a+PVUvx9T9nOIfT+GV5p3yY/ds67wvsXqpxau+G09Lx+\nr3TqrEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV4ljnLw3U0jvO\nO0fs2lWqyUw6XLkyfYrWZkHldBEV09eveG3Fq1mI3jd4vPrOIaid8G9MP3Y38k6fNrt/rMk9Ou8s\ntfXXn49rGWInuy8SO/k5Gl1E3rG/fzbOe94wTy99mbRvTrMOOvNfJWsesywniukrG/jU6fF43WYN\nTmtEeJtEQ06aSmK2+bNtEd+qfSO17unF9Hmvy1y13XWyVmN4tExLxVK8PmNq5NrT58zawam+m/yc\n0Xj8NpRYSvQZ7xEOdqI3rPozxayNRXe0ct/ON03jmrKB5nV4q1yTO20Obmv4c+cx8HoeI6WZpNoj\nq83niYmYscU0r8aJ6T1n49zeJ+Meqm1drb9J+Kd5p136StGVem9l9TbHxLDFp7W7+sS+q1nesT6w\n+PcAzVjiGHftzQ+v4f8AJpv6On8jH9ZgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAABp8VrW/C9TW0ztOO3b5Nxp8VmI4bn37TWYB8f1HFtTfUfR9FWJmsdZ9I7MtJxDX5s\nd8ta1y0xzteaR2277rcuhycP12SceLxMeWNpjttHwlu8I0mfQ1y+D7k5YmJmY36T36Ka43z/AF1t\ncI1ds+qxVj7/AEej19PCw9HJ4NoK4OIU5Y35YmZdzVTGebVZabx5jJS+Tmns81rNLm1Wrzc9rVw4\nYibbem72mXTTS0w0M3BvEta1bWrM95ie5EanY87wXgNOL6XPfxraXLhra/W28bR/dzYzarBqJxRe\nbzE7Rt5vWU9n8mPHOGmS0Ypnea1naJb+k9ncNLR7u2y/WcxXO4TOoyUrN6zD0FaW5Y3hu49FiwUi\nKxCvLMR0hlW0jn6ukWw3iXjOJzbDlneOj3GaN6zDzfFOH+LE7SRGo83XNSZ2lbG2/WfdlvaT2cy6\nrNFInlrv1mfJ37cK4PwTTxOoidRm2+/2/KFuyMp47XB4LivXiunrH2b2iH2qn2K/J8x4fGDNxTSZ\n9Nh8OviRvTyfT6xtWI+DeXs9MNZubypASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAOZx6/LoOWPvWiHTcf2hiZ0e8fc2mf1E5+vP/AEeuSd7RC2uKtI6QjHfeINTfwtPf\nJvty9WPfbt/lucP03gxfJf7d/wBoReYpm97zaNeLb4Ims9Nt94auDjem1Wo5PFi1onylS+1o7l8V\nbxvtupjDMdNkYtXS1+Stt+m63xImEJ4xjHER2ZxMUjeUTO3VRmydBbjLJqPi08mbeVOXJPq1sl5Q\nVbkz9+rRy35rxHqzmZlVEe/Ez5LRlW5iyfR6zffaIjq1OSNZps2a21rZInafSPJhxGMl9LStLRWM\nlorM/A4dkrWbYfLZC2W/7K6eubX6b4RzT+W76K8b7G6X62cu3Sten59nsm3j+OXz3/0ANGIAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0OIYfpOHPijvNNo+fdvtXJO18k/\n/OwPFYbz2ls3jx8VqW6xMdWPEdP9D4lkx/dt79flLLHbkxTPwY6nt2512ORTRzE2x4/dpE7cvkme\nE4IrW3hRMxO8THRtU1FKWtvtvK2upx22rzRCtXkqzh2jtF7ZbT122b01ndnpuWuP3Z3+Ky20qDVv\nfauzVy3mejZzNK8dVjqi87KLRLYtXruqvXzkQp7Qoid88R6rcl+WGlW0/Sa22mfhCZOq2x082ix6\njkm822pO8VrPdr4dNObVeDo8XW3uzMbzK+mvxT7szE27cvnu9j7PcNjSaXx8mOIzZevbrEeic5tN\n+SZnpt8J4fHD9HXHO3PPW0x/DeBtJxx29vaAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAKNRim9Z5e89Nl4DzXtVh5babURHrSf7f3ec1+qnDorWrvvt5Pccb0n0zhmWk\nRvevv1+cPE2rGTFNZU26PFfxwa5dVkjelI2772nZnX6bbrEUq3o0d678u8wmuDL2ittvVjXdneeK\ncGv4jpJ6U56+kS7+j118+GLXpakzHaWlp9NNY3tv+bbiYiNoQy1y30uyZJlrWmZnuym6q1iIJnop\nyW2Te8bdWnnypQqzZOadokiIpSZntWN5lrxki19vNRxrUeBwnNNd+fJEY6/OejXLn3Xe/wDp9wyn\nE8uo4lqqxblv7lJ26T6vpD5X7G8QycKzeBMbzMRM1/FH/wA/h9QwZ6ajDXLitvWzRgsAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeL45w+dDrZvWv1OWd4+E+j2jX\n12jx67TWw5Y6T2nzifU+rZ1y9eHwzDYxxEy18+DJodXfT5o96vafWPVbjyxDn1OOzHudbM0rt2UW\niI69mVtRXZq5tREb9VUoy2iIlRbJ0UX1VZ6btTLrI7V6yk62M2oisT1c7JmtkttVMUyZp6x0beDS\nRWOvdKijDimvWd3G9pNRMfRcNfvZOb9Hpb0itJeP47k/3hgjaZnbaP1XxWW3T0movbNS0W645nbf\n0nrMPpXs3xamoxdJiLbe/X1n8Uf3fKsOTw4jbaXo+EarJhtGTHMxeJ6xH7Sti9Zaj6x3HM4NxXFx\nDS1mtoi8dJrv2l011QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAGjxLhODieOIye7kr9m8d4eM4to9RwjPXFa0ZIvG9bR0fQXmPbDFvTTZPOJmEWS/V8bs9R43NxLL\nG8eFbePg1bajU5/s0l1ceKLx1hbjwRE9mOpx0y2uRTSZsm3PMw2aaKtIjo6kYo9EXpET0hVLXxYK\nxC6MZvyx1lFs0RHfaPiCnU12pLyHGNDbUajBekWma2npWN3p8+opa20e9LSyZLxExTlpM+vdOdcZ\na9tPS8MyUvFrzWlI6727u1pYxYrbVmb7x+TQx6au3Nqcl7/0rcmW9axGnwZJj1novmxnZXV0fFp4\nZxLBPgTGK8xzXr5fOH0bFlpmxVyY7Rato3iYfNuG2x56Wrqa8s2jz+7Lu8O12bS6jkwzN6THNNI6\ntvrN68Y4rxlx1vHa0bskAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAA4XtTTm0OKfTJ/aXdcL2pyRGjwU362yb7fkJz9eTxxyZJjyltRXzUZK7TFtl9Lbwy06YzrHwa+\nfJFd/wCVt8m0bQ0eS2qzcm+1K/an+zNZFL5M1pjFXeI72ky48eGnPkvNp27+TPU6nHpMfLXaIjpE\nerk5dRMxOfN1mPeisfshW1ne1a1577Y6x5R3U0zze31FOWI6ze0byU098kRlzbxM9qrMlPDpyRMR\nMd5Vt/Ihp5898mWZm1pjftE91uCt7fCI7dWeHDEW3t723l6rslqxWZnasR+SYhFbzhnfxJ2jyeq9\nlcGXWZcmW0zWKxHLaI7794eJx5fpfEKabT8t8l5isddo3l9S4VjrwrRUwzSJt3tav3pdOL6Y6dXD\nj8HFWm+/KsU4NRXPvtWazHquWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAa+fXYNP9u8b+kdZBsDkZOO135cWOZn4y5Wu4xqctbe9y19Kp4njt6vi+PDm8DFMWybbzPlV\n5PiGtz67UxbNbeKTtWIjaIXYpnwuaftT5tXJT3vmi1pMsrU5qIrG1V1a+5DCa7b9GFbRr5J6Wnbt\nCu+Wmk0m8956z8ZWZNorbfzcbX5rZslazPux3hUt41NTntktObJ13+zX1bek01r4/HzVm0bxPXy/\n+bNfDgjVa2uOY92kdfg6ufJOKvLXtttVVSqbcta2vM7zXtHpLQy5ZtMd+vWd+7Zy3mdJHXra3f0c\nvUarw7zFY5rT2hH1Lavnrgx81p3U49Pk4nE5L35MO/StfNRXR5tXnrS8W67WvfyiPSPi7uLHFK1p\njrtSsbR5Lc4RzsXBaYreP4l45esRD2HD9fnw6evvWvO3Tfr0aGk0U55ra0TFInv6uzgrXFXlx0i0\n77RPlC83Yj+JW7oddqr6vHzTTw9/f6dod+L1t9m0T8pcbFSmPHER3892W0zPuz+jSbVvidkcqmfP\nSel7bekrI4n4dZnPWIrHeYnZee2Wpy8dEaml4npNZblw5qzb8M9JbYgAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAABEzFYmZnaI7yCXL1XGa0jJXT0571nbee27DiXEprp8nhbxG20W8\n5cbD0ikfnKO+urTPvjoZdXqctdsmTaPSvRpWmsdZ6yztfaGplvv3lWW1tyRlz1x0vkn7Vo5atTNe\nY0+1o79V2KsZsvX7Ne5mwxnyTNvsx2iGneM/rCdRSuOsTasTt5kRFtpjqmOH4t4nk7estiMNa97R\nHwhna0iuKTEdmGWa4672nZtRele1N59Zlq6vLOSsYorEc07qcW65euzRvtXvPZy52naZ7ujr6fXV\nrWdukREK8+njHgmZmPc67bq6ivVWhxxgxZLztNrT1mZ/SP4VZs0zaOvfp84WUtNsXLvtv3699+rU\nz7+Jtt5qURqMnPpctaR1rMSw4ZoK57eNk6xHaJRh97Ltt7lo5Z+L1HAPZvVauZ2nFTSzMTzeJEz8\nto6xPfvsZntPZ9rXxabmxzefdrv0j1dXh/BcmstW1qxTHHasR3+b0GPhGl+kWmd64dNEVjf73T7X\ny8vy+Ddx6O3iRakxTH5RXrMw1/lX+3Itw2MFIraN48qRHdZi0cUjmmPen9noox1iO0fNzdXEYrTt\nstcmd9aX0bJ+HePmiKTitO8TMLZ1cVjrMfqpz6ys4pjfrPRWZ9rXXptUit6zO+23VyaRHEc05L1/\nw9J9ys/en1ljqdVbwYw452tlnl3jyjzbmmiMeKtYjpEbLeTXPUU8ee/+qjJpsV5rbkrFqzE1tEbT\nDpYNbW21Mnu29fKWna0KbqTdjXXjld0cvQ63ltGHNPSfs2n+HUbS9c2s2UASqAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAOVxPWe99HpP8ArmP4b+r1EabT3yT3iOkesvMVtN7za07zad5l\nXV5GmM9vVfEstvDx0jtaVVMlq+UJ18b5cMRvPeSuK87bUt+i2Z3PtG7zXpjkzXt6R+TXyTMzvM7t\nydHqZ+zhv1+Cv/ZuqvPTHMfOYaTMil1a1K2vHSLTELq2v+KWzThGo84rH5rq8JzedqR+ZeI7WnOS\n34pYTafWXR/2Pln/AMyrKOCWnvmiPyR6O1y9585lhWJvl557Q6eo4T4dYiMvW3b3UanhldHpJtGX\ne09unmjsT7eb1l4trI2t0hsZfrdNO0bzy+nzU20/+NmkzO9esz+TZxWis9dttvPv+Tn21jjaW8zn\n26bTG3mp1M/Wzv3t0jyWXiKZJmsTERaZhXXDbNl8WaztWenxZLstPp5pau8frDtVrNMM5cfTfpMf\n3aunxxbes9d/R09Dp8ebJi09ptFr3jtt2WyrW9wy1Jx132mK+Xq9PotT0iIU19ntLtExa3T47T+q\n6nBaYvsZstZ+cT/LeMnUi0TXffo1s2m8Ws2/OIMWk5Jib5L328rS2t94Sh5TV4ppklpW6PT6rh+P\nNbebTHyas8E081mZy5P2W6OFhjxNTE/hr/LoRO0Kvo9dPqctKzMxEx1la5t3tdnjnMs4noievcrO\nyZjeFF1OSnNV0OG62cn1GWffj7Mz5w05joovzY7xes7TE7w0xrjPeex6Ua+j1UarBFu1o6Wj0lsN\n3JfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACrU5o0+nvlt92P3BxuM6nxNRGCs+7Tv8\n2hToxm1r3m9utrTvMsonqyt7XTmcja0u3O6FMfi5t/u0/lzdJM81p9O3zdvHTwsUR5+bfPqOfX1h\ndqV+3O7bs1+T31oqmI3TEM4rvCdkDGIIhlFd2daboS0NXG2bD6bufxXU1vlmu/u4us/N0+L1tTSx\nkr9qk7w89j1FNZMV3jxLzvaJ8mer+LSOZqK2xZotbvljfr/89U453rXt9lse081xZtNjx7TGKu0t\nDHlrevSevaN5Y6+tJ8c7VRNMt63n3ub+6/R54rERMztDYy4a5omclYmfxKcenrjtHLvtPrCnVmdb\neFe3JXmjy6eS/DrMuLVYsta9Mdt++6qLxO+0dEc8UmInr18iUfReHcXrqccb9Z27Q61Lb13eJ9nc\n1Z35rTvE9avY4bTkpG8xEfB05vYxqybc07R281naGMREdoT5JQqy9mply7Q3bV3iXG1eXw7TWSka\nc258t7+tpT5/BjT7MfHqndz12Z+M4lMMKyziUJJiN1WSu9fku23RaOgKNJqbaTU1t9yelo+D0cTE\nxEx1iXmM1Nt3W4PqvFweDaffx9vjDbGvxz+TP66QDRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAOJxzU73rp6z296zsZMkYsdr2naKxvLyObNOfNfJbvad1dXkaeOdpvsc2yuZVzfbfqybutwu\ns5s8R92J3dvJb3tnO4HSMegtmt3nfZvYp8SZl0z45NfSK7onH1bNcfRFqnUKJr0Y7dVtq7prjEsK\n0XVpEM6028mW20IHK41aPo3J6zs4ODhdcvPnvExFevNXpMOrxi/PlrTee7PLX6Pwa09uaNlKtHg9\ndM3z5d7ReOu02nu0JzZMfblrv5R5uvrcdImZ26T1mYhxs1Os7RH93PZ7axuafNfLitvbaYU3yZYt\nPXs9NwHhui1HBa5LVicsb81onrEuVqNNSuS8Y67dZ6xPZa59Il9uX41vEitImZme3q2Kxbxora0T\nMd/ROSa4Ztkj7c9OafL5LuGYubmyX3iu/TfbdSfVnpvZLT/XZK233+Mbbva1xRXyiPk8pwbH4N6T\nadq5a71n0tD1WDL4tPe6Xr0tDpz8YVnJHWEXYxbqlBedoef4tW0XraO09HdyztSZcbUz43C+ee9b\nSVMaeOfqq7+jGckQ1Yz7+7v2RN/WXPXZPjci2+2yyJaVMuy+uSJlA2d+pNoVRbeDcSxyTE+TDDlt\npdRXLTynrHrDOyiyZeVFnY9TjvXJjres71tG8MnJ4Nqt4tp7T1jrV1nRL1x2cvABKAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAHJ49qfD09cNZ97JPX5PPw2uI6j6Vrsl/ux7tfk1mWr7dOM8iLdm\nvfebREefRsWldw7SxqNbWbR7lPesrn3Vteo7dYjDpMGCvfbeXQ0uLlxRLRxROfUc34p6fCHYrXlr\nEejqrjY8uzCYW7MZjdVKqK9VlaxCYrsnYExBMRMJRPZA8/xPHtmpP9W2xx76vhWOInvt/C7ike7N\nvwzE9kcapGfhlevTaFbFo8RqJ5vy8/RoW09ek0msxHfp3dzNoLzp4zUmZpMbT8HJyYJi20X2n0lh\nZY1li/RaidBF4w2mK3jrHaFGp1lN+tptPp5IjBkid5mIp16TKu0abBPv33vPlM7z+iPdFNcWXU5I\ntkrNce/b1W5db1nTaf3ax9q0fxDW1ebNk2phty1mOu09VOm8W19orEz23j1TwfSeERFuEYMddptW\nd43dvBn21eKJ75KbW+cf/JcTgMxXTb3nbljz+TpcPmc2uyZO1KRtVtGVdi0bx07qJnllsRO6rNTe\nN4XVamsy8mnvPwc3R2jPwe8TPbdlxXNOPSZfhWWpwO85OFzv57qrODkzeHntSe8Sn6Rv0a3EZ218\n8nXekfr1a0ZLVnqx19dWb6demXybOO7lYMvNMdW9S/VVLo0us7tPHdtUtEwJiZU3jq2Jhham8CVG\nPNODNTJXvWd3qcWSubFXJWd4tG8PK3pPd1OB6veLaa89Y61/u2xfxh5c/rsgNHOAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAANLimq+i6O0xPv392rdeZ4rq/pOqnlnelOkIt5F8Z7Wj27I2I6sb25YY\nV1ImY3dbQ08LRc23vZp2j5OJG+XJWle9p2h6HHtbJXFT7OOIpX+7TxT31j5rycdTh+Dpz+XaG/sw\nw18PHWseULN2trBE9UcrJKBhFU7JAQi0dEomegNDUYovM7x3jb5tO1ZvpbaTLtzRExWfWPJ08kbT\nEx5NXWYYyV5omYtHWJieyeDzuizfRs19Jn6TM7Ru1uMcJxZqTkw+5f4ebqa7SV1MR4tdrx2vEfy1\naxqsNOTLjnLXytVXi3Xj8+nmsxTLM16d5npPyUzpekTtSK+U7vS6vQ/SYmK1vWPS1HOn2dvvvvE/\ntDO5XlcO+LbfHSd/W3o6/BdDOXPTnj3Kz38rS6Wm4FNrRyRzTH3p6RH/AKvR8L4dXSzE3jmtHn5I\nmbfqLV+m4dbLSsZInHjr3iI6zLpYaxS01rHuxHRHiT9mv6s67Vj1aqL6326MrWiYa+/Q54BxPaGe\nXRZpj8MquB4+Xg8zPnB7SX30to379GxpK1xcHiKz5IS8xr8PLPixH2bftLTy05o6dHYyVjLhy0t1\nizjZa3pMVv3iO/qz1G2L+NbSajbNyW7xLsY8kTDz+fJXFqKZN4iZnafi6WHL0iYlStI7OO+7axW2\ncrFl7dW9jvE9ULN+J3ZbdFGOy+AYWpEqN7afNXLj+1Wd23KrJVMvCzseh0+auow1yU7WhY4fCdV4\nOadPefcvPuz6S7jol649Tl4AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV581NPhtkvO0R+4NPi2\nr8DB4dJ9+/7Q83Po2NTqLanNbLfvPaPSFDHV66sZ5ET0hRknyW2lTtMyouz0c8usx2n7s7vScKwx\nzc1vu/y85p+maJh6Th+SOWeveXR4/wDLm8v+nX5mUWa9bbrInolmu5jdTNkxYFk2Isr3TuCzeGMz\n+THdEyDDJO9Ja823rt2XWnya946pGvktDXta0ztWu/ybvLE9dkcoOf4GbJPWK1j49VmLh9JtE33v\nMevb9G7WsW8l1ccREISophiJ2jpDYpijbaOjOuOJ8ujOdqxsgVcsUjaETYvbaFFrgu5lVsm0yUtu\nryg43H5m+GIj1XcJzePoL4pnrWGtxmfchr8JvfHS1622if3QljzTTLes+qrNjrkiYtCzPMxnm095\nYZJ6boS5teB49Tqscza97VtvWvlv8V/FOF34RrIxTM2xXjelp/eHoeA6XnzReY3ivX/0dfivDcfE\n9HbDbaLx1pb0lOs+jO7K8Lis3cN+0NKcd9PmthzV5clJ2mF9J9GHHVL108dm1SznYr/Ft0tuhLb8\nmNohFbMhLWy0mJ3rPXvDvcO1karBG8/WV6Wj+7kWrvDDBlvpdRGSnbzj1hpjX4z8mOx6UYYstc2O\nuSk71tG7Ns5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeXneJ62dVl5KT9VTt8Z9W9xbWclPo+O\nfft9qfSHEU1pv48ftYST23ZTDC/p0YtlVuvVjMbM5+LCZjYGWGdrTPxiHY4ffaf3cjTxz1v6xMS6\nOlty2iXVj/Dk8n+ndrkhnGRo1v8AFdW3RCrZ5uiYsqrboncSu508yjmZRYQt50TfowYTbYGVrKrT\nuTZjvukQnYhMIGVY2ZxPVWyrHVCWzXpVXkt3TE7Va+W4K7X3jv1auTNy3jdba0RZpamfroQN7Hk3\n6wr1GTaN2OOJiu6Mu98NvgDi8Wy74d/yZ8PiPAiO2zU4nb6qIn1bugjfFE/ASp1ke9u15mbbRDZ1\nMb823kx0Ontn1OOkedoJCvT8I03gaKsz9q/WW+isRWsVjtHRKyrhe0XCfpWL6Vgr9fjjrEfeh5fF\nfeH0V5Dj3DPoOo+k4a/U5J6xH3ZZ7z3228evytOk7NvFbo0cdols47bSybt7HbddHVqUs2aW3Qnq\nxVeu8LILR3SlZw3V/R8nhXn6u0/pLuPMXjeHT4Zruf6jLPvR9mZ8/g1xrvpz+TH7HUAaMAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAABRq9VXSYJyW79qx6yvmdo3l5viGs+maqYrO+OnSvx+KLeLZz2te1rZL2v\ned7WneZYWnZl5K72YV1xEyxmeqJljzIEWlVkszvbZp5soN3h2SJz3pP3odCnuWmPRxuERfJrZmtZ\nmtY96fR28kbX3dXj/wAuTyf6bmK+9YX1s0cNtm3Sd4LFY2K23W1s16StiUJW7bp22RW3RluBuruz\nmWEgrmCGWyNkoExKE1QlPmsqRDKeyBjaejWy2W3ttDUyz1QKslvehVqKTNosyyTvELabXptIJpaP\nB39Ia2mz+JGpr51jdZefDx2hzuHZObNq58poJaGtjxJ2+LoaKP8ADRPo5+T3skx5OhpOmC0fBNQ0\n5yTbn+bt8A0u9raiY6RHLVwY62mI6zMvaaHBGn0mPHt1iN5+aYVsACBXqMFNTgviyxvW0bSsAeE1\nmkvw7V2w5Ote9besJx2er4rw2nEdNNekZa9aW9JeQjnxZLYskTW9Z2mJY7zz26fHrrdpbZsY7NGt\nmxjvso1b9NmUwpx33XRO4K7VUTE1nmrvEx1bVo2VWiJE/XY4frY1WPlt0y17x6/FuPM0m+HJGTHO\n1qu9pNVXVYt46Xj7VfRtnXXL5MfzexsALsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHM4jxOMFJphmJv529Dq\nZLfjDjPEIx450+K3v2+1MeUOHSOWFc3nJkmZnf4yujpVlqunOeFpV2nctLCZUXRM7MJtsWlRkv3Q\nky5NmpWt9RnrixVm17TtEQnJabXisRMzPSIew9n+CRoccajURvqLx5/chfOest642OGcIpoOG2w7\nROW9d72+LQvXevyejcPUU5M+SvpLeOataraw2a0dLbLqTtK1G3Es4lVWWUSoldFtmcXUbpidgXzK\nGEW3TuCUSncnsDFMMLSms9EC6J6FpVzbZE5ALy0809ZbFr9GtfrEoFMzuuwz0Ueey3HbaBLDXe7i\ntMOfwWnP9I+NZbuttvhs1uBRtXPb4SDm3iIvf57N7Dbl0VrS5+XrltEd+Z1Jx7cNms9N4TURRw3T\n+PrcO3WszEvZOD7P6aYiMlvu16S7y1QAIAABxOPcLnUY/pWCv1tI96I+9DtgmXl68Biy7/NtUu3+\nO8HnFa2s0tfd75KR5fFyMWTdhrPHVnX9R0cd21S3Rzsdm1iuqs256wrmGcT0RYSx5d047X02SMmO\nesd49YRE9WcdSXhZ2O1p89NRji9J+cei1xMc3wXi+KZj1j1dTTaqmor06WjvWW+ddcu8XK8BZmAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAMMmWmKu952UZ9XFZmuP3revlDTtzWnmvO8q3XGmfHb9ZanV3yxtWeWn7y4es\nvPNtDqZJ6Ts5mppvdl/XXRMyfGvSNlu/RVvtOzLfoipLT1VTKbSpvfogRkvtDVyZOhkyvQcA4Dzz\nXV6yvTvTHMfvK+c9U3rkW+zvA/D21urr789cdZ8vi9KDb45rejl8Rry6iJ/FV1HP4vXbBTJEfYt1\n+UpiHM295bXsqrO9l8QkZ0lZEqqLeyBZHZLGvZkhIndADKJ3TMoqWQMZ6pjsxll2jsCLSrmU2lFY\n36gieyu0LJk3jbsga0wdqzK20QpyztQGprL/AFMrOE05NLkt6qdVWZxNrSe5o9vWBLiUjnzXn0vL\nq555dHt8HOwV928/1z/LpzXxbYccRvzTB+jucOwxh0dI22mY3ltIrHLWIjyjZKyoAAAAACJiJjaY\n3iXleM8InR5J1GniZw2n3oj7s/8Ao9Wi9a3rNbRE1mNpifNFnVs65XhcWTdt47bnFuF24dm8TFEz\np7T0/pn0a+HJux1OOrOux08d1ndqY7tillVkzExLOk7yd4YxGwluViJhE45raL0na0dtlWO0+bZr\n1TKi+2zptZGTamT3b/tLacvJjiY3XaTWdYxZZ6/dtPm1zrv1z78fPcbwC7EAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhkyV\nxUm152iAZWtFazNp2iGhm1Vss8uP3aevnKrNntqLdelI7VRHRnrX/HRjx/tZREVjZXeybW6KbWZt\npCZ6S08tN7Nmbb7zCrJtyoS5145bSx5mWafelr3tsKmS/o08uXyhlly7RPV2+AcBnPNdZrK+53pS\nfP4ytnPVda4y4BwHxOXV6uvu96Unz+MvVxG0bQRG0bR2G0nHLb2gCUDX12LxtFmpHeazt82wT1gH\nmMN4tWs+rcr2aEV8DU5sM/cvO3yb+O0csLUTSdrLphRE8tlkZI7Atr2ZMazDJVKTYSCawi7Ksq7z\n1QERvLK3ZGPrKbyCrbdnMcsbeaa18/RhvvM7oGEwTG0JmYYTIML22a2e28xELM19oURPNO4lOem+\nn3ZY5+prVnMc2GYU4/L4A0a15cNf6rz/AC6fC6+NxCPOuOu/5tHJTbHj+F5/l1+BYumXJMd9o3/d\nMRXYASgAAAAAAABhlxUz4rY8lYtS0bTEvH8R4ffhmo6bzhtPu29Pg9mq1Gnx6rDbFmrzVsizq2df\nzXkMWTeIbNL7tbXaHLwzUctvexWn3bmPL8WFnHVL326VZ91MfFVjvvVlz79kLrcf2m7j7bNHH3bl\nJ2SirLQoy4t1++7G0dBC/RanxI8PJPv18/WG241+alovSdrV6w6mDNGfFF4/OPSW2b1zeTPL1aAs\nzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAVZ9RXBTe3WZ7R6iZOpzZq4ac1p+UermZMl89+a/byj0Ra9815ted59PQ32hlrXXRjH\nDpCLX6ML5NlNsm/ZRqstfdXzbsZt06sLZNvNB1Za8RDWyZdo7q8udq5Mu/mIMt4md2lmy7JzZuWJ\ndHgfBL8RvGo1MTXTxPSPx/8AstJ1XWpIs4BwSdbeNVqq/URPu0n73/s9hEREbRG0QUpWlYrWIisR\ntER5JbSccur2gCUAAAAPM8Sry8Uyz67fwuxbzVPGsE49XGbvF42V4M0TEL33ERnktsxpk3sumK2j\nadmFdPFZ33VS2Mdui2J3UU6LYlFSsN2O5NkCyJ6K7T1TEsbAsxdpReerKkTFGMxvYEz0rsqtbbpC\nb2VT1QEzuwtbaGUxspuJU3neWdKoiu8rq12gCI92YatLcublnzbEz1aOptyZqTuDHLfxN6R0+t5X\nqdJhjBp6UiPLeXl9NSMnEKxHa1+bb8nrlvxUAAAAAAAAAAABTqtNj1eC2LLXeto/R43VabJw/VTh\nydY+7b1h7ho8V4dXiGlmvbJXrS3xRZ1fGv5rzeHN02bEW3cys3xZJx5ImtqztMS3MeTeGFjqlb2O\n8btql3NpbZtYsnSBLeiWfdTjtutid+ghherHS5p0+f3vsX6T8Fkw181d4lMvEWdnHaGnw/UeNh5L\nT7+PpPxbjdyWcvAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAo1Oprgr63ntAmTqdRqK4K9etp7Q5d7Wy2m953lNrWyWm953mVd77R0\nZa1104xxlN9lV8qnJl2a9s3xUXX2ybsJyRDWtl3YWydEC+2VRkzeW6q+T4tbJm+KRdfK1cmWZnlr\nvNp7RC/R6HU8SycmCk7ed57Q9ZwvgOn4fEXtHi5/O9o7fJaZ6z1uRyOEezVstq6jiEbV71xevzer\nrWtKxWsRFY6REeSRrJxz22gCUAAAAAANbX6aNVpL0npMRvWfSXlKamsRMVvXm+EvZXjmpaPWHzfL\noNRjzXicfWJ8phfPxFejx72x7xMzK+sXiNoiXlq+Pi6fWV/VfTNqfLJl/WTg9Pji8R70LqvMV1Gq\nj/zcv6yz+lanzzZP1lWpelTET6S81Gp1P/Gyf90s412rjtnyfqql6asREdWM9+jz9eJ6yP8Az7uh\nodZqMt458tpB1JvEViI3/RhzRt13/R1MNaziiZiJn5K9ZNceKZiIiQcu/WekT+iYrWI3lzdTrs+8\n8uW0fJzcur1Np/zsn6g79phVaIeetqNR/wAXJ/3SwnUaj/i5P+6UD0ldonum161h5mNRqP8Ai5P1\nlNtRqJjacuT9Qd22WN5aGeZyZd/KHJy59RHbLf8AVq31Gp/4uT9ZEvS8Lr/vSs2npzRtL1z53wK+\noza/HW2XJNd99pmX0Rb8VAAAAAAAAAAAAAAcHj/C5yV+l4I9+v24jzj1cLFk8nu5jeNpeW41wmdL\nknU6ev1Vp96sfdn/ANFdTrXG+eq1q5F2LLtbZoY8m8d11bbSydErsYsm+zZrO/zcnBm226uhiyRK\nEtrvCrJDOJTeu8A1MWX6Lqq5N/dnpb5O5ExMbx2cPNTeJb/DM/iYPDtPvY+nzhri/jDy5/W6AuwA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n"], - "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;2BCzId,IAAM,IACN,MAAO,cAAgB,YAAoB,YAAY,MACpD,SAAS,OAAO,QAAQ,OAAO,UAAY,IAAO,KAI3D,+BACE,aAAiB,KAAS,KAAO,MAAO,MAAQ,SAChD,MAAO,SAAQ,OAAO,YACpB,QAAO,KAAK,KAAO,IAAI,QAAQ,MAC7B,SAAa,KAAK,UACL,IAAI,KACjB,AAAI,MAAM,QAAQ,OAAS,MAAM,QAAQ,MACvC,KAAK,KAAO,KAAK,OAAO,GAAG,MACtB,AAAI,SAAS,OAAS,SAAS,MACpC,KAAK,KAAO,UAAU,KAAM,MAE5B,KAAK,KAAO,OAGT,MACN,IAvCL,gBA2CE,uBAAyB,IACvB,KAAK,GAAK,IACV,KAAK,QAAc,QACnB,KAAK,OAAS,UAAiB,eAAS,YACxC,KAAK,GAAK,KACV,KAAK,MAAQ,OACb,KAAK,WAAa,EAClB,KAAK,mBAAqB,GAC1B,KAAK,YAAc,GACnB,KAAK,SAAW,GAChB,KAAK,KAAO,GAEZ,KAAK,OAAS,CACZ,SAAU,KACV,QAAS,KACT,SAAU,KACV,KAAM,KACN,IAAK,KACL,OAAQ,KACR,QAAS,MAGX,KAAK,SAAW,SAChB,KAAK,IAAM,IACX,KAAK,OAAS,OACd,KAAK,QAAU,QACf,KAAK,KAAO,QACZ,KAAK,KAAO,SAGd,UACE,MAAI,MAAK,OAAO,QAAwB,aACjC,GAIT,gBACE,GAAI,CAAC,KAAK,mBAAoB,OAC9B,YAAgB,AAAG,aAAS,MAAM,oBACjB,KAAK,WACtB,KAAK,WAAa,QAClB,WAAe,QAAU,SACzB,AAAI,SAAW,GAAG,IAAI,GAAG,IAAK,QAIhC,cACE,GAAI,CAAC,KAAK,YAAa,MAAO,MAC9B,GAAI,CAAC,MAAO,MAAO,uBACnB,GAAI,AAAG,QAAI,MAAM,SAAW,CAAE,iBAAoB,aAChD,MAAO,yBAET,IACE,AAAG,0BAEH,MAAO,qBAET,MAAO,MAGT,mCACE,MAAI,MAAK,OAAO,KAAK,UAAU,QAAgB,AAAU,sBAAY,WAAY,YAC1E,OAIH,kBACJ,KAAK,MAAQ,OACb,cAAkB,MAClB,AAAI,YAAY,MAAK,OAAS,UAAU,KAAK,OAAQ,aAErD,AAAI,KAAK,UACP,KAAI,YAAY,KAAK,kCAAqC,oBAC1D,KAAM,MAAK,aAAa,IACxB,AAAI,AAAG,QAAI,MAAM,YACf,KAAI,iBAAkB,KAAK,QAC3B,IAAI,YAAa,AAAG,QAAI,QAE1B,KAAK,SAAW,IAGlB,AAAI,KAAK,OAAO,MACd,CACE,KAAK,OAAO,SACZ,KAAK,OAAO,IACZ,KAAK,OAAO,OACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACZ,KAAK,OAAO,QACZ,KAAK,OAAO,UACV,KAAM,SAAQ,IAAI,CACpB,KAAK,OAAO,UAAa,MAAK,OAAO,KAAK,QAAU,AAAS,cAAK,KAAK,QAAU,MACjF,KAAK,OAAO,KAAS,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,QAAW,AAAI,SAAK,KAAK,QAAU,MACzG,KAAK,OAAO,QAAY,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,QAAW,AAAO,YAAK,KAAK,QAAU,MAClH,KAAK,OAAO,SAAa,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,QAAW,AAAQ,aAAK,KAAK,QAAU,MACrH,KAAK,OAAO,WAAe,MAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,QAAW,AAAU,eAAK,KAAK,QAAU,MAC3H,KAAK,OAAO,SAAY,MAAK,OAAO,KAAK,QAAU,AAAQ,aAAK,KAAK,QAAU,MAC/E,KAAK,OAAO,UAAa,MAAK,OAAO,KAAK,QAAU,AAAS,cAAK,KAAK,QAAU,QAGnF,CAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,UAAU,MAAK,OAAO,SAAW,KAAM,AAAS,eAAK,KAAK,SACvG,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,IAAI,SAAW,CAAC,KAAK,OAAO,KAAK,MAAK,OAAO,IAAM,KAAM,AAAI,UAAK,KAAK,SACxH,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,OAAO,SAAW,CAAC,KAAK,OAAO,QAAQ,MAAK,OAAO,OAAS,KAAM,AAAO,aAAK,KAAK,SACpI,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,QAAQ,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,cAAK,KAAK,SACxI,AAAI,KAAK,OAAO,KAAK,SAAW,KAAK,OAAO,KAAK,UAAU,SAAW,CAAC,KAAK,OAAO,WAAW,MAAK,OAAO,UAAY,KAAM,AAAU,gBAAK,KAAK,SAChJ,AAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,SAAS,MAAK,OAAO,QAAU,KAAM,AAAQ,cAAK,KAAK,SACpG,AAAI,KAAK,OAAO,KAAK,SAAW,CAAC,KAAK,OAAO,UAAU,MAAK,OAAO,SAAW,KAAM,AAAS,eAAK,KAAK,UAEzG,YAAgB,KAAK,MAAM,MAAQ,WACnC,AAAI,QAAW,MAAK,KAAK,MAAQ,IAAI,MAAK,KAAK,KAAO,cAIlD,qBACJ,GAAI,KAAK,OAAO,SAAY,KAAK,OAAO,UAAY,IAAO,OAAU,AAAG,mBAAiB,KAAK,OAAO,SACnG,cAAkB,MAclB,GAbA,KAAK,MAAQ,UAWb,IAAI,mBAAoB,KAAK,OAAO,SAEhC,KAAK,OAAO,UAAY,QAC1B,IAAI,sBAAuB,KAAK,OAAO,UACvC,AAAG,iBAAa,KAAK,OAAO,UAC5B,SAAa,KAAM,AAAG,WAAM,SAAS,yBACrC,AAAK,MAAM,IAAI,6CAajB,GAVA,AAAI,KAAK,OAAO,UAAY,WAC1B,KAAI,+BACJ,AAAQ,YAGV,KAAM,AAAG,gBAAW,KAAK,OAAO,SAChC,AAAG,qBAIC,AAAG,mBAAiB,SACtB,AAAI,KAAK,OAAO,YACd,KAAI,kDAAmD,KAAK,OAAO,YACnE,AAAG,QAAI,IAAI,iCAAkC,KAAK,OAAO,WAAa,EAAI,KAE5E,AAAG,QAAI,IAAI,2BAA4B,IACvC,AAAG,QAAI,IAAI,2BAA4B,IACvC,OAAW,KAAM,AAAG,eAAU,kBAAkB,GAChD,IAAI,cAAc,GAAG,aAAa,GAAG,qBAAqB,GAAG,aAAa,GAAG,aAE/E,KAAM,AAAG,aACT,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,iBAIrC,mBAGJ,+DAKgB,GAChB,KAAK,MAAQ,WACb,UAAY,MACZ,UAAc,KAAM,MAAK,OAAO,SAAS,cAAc,MAAO,KAAK,QACnE,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,WACpC,gBAAmB,QAIjB,GAHA,KAAK,QAAQ,YAGT,CAAC,MAAK,OAAS,MAAK,MAAM,oBAC5B,IAAI,2BAA4B,MAAK,OACrC,SAIF,KAAK,QAAQ,cACb,AAAI,KAAK,OAAO,MACd,OAAS,KAAK,OAAO,KAAK,IAAI,QAAU,AAAI,YAAQ,MAAK,MAAO,KAAK,QAAU,GAE/E,MAAK,MAAQ,UACb,UAAY,MACZ,OAAS,KAAK,OAAO,KAAK,IAAI,QAAU,KAAM,AAAI,aAAQ,MAAK,MAAO,KAAK,QAAU,GACrF,KAAK,KAAK,IAAM,KAAK,MAAM,MAAQ,YAIrC,KAAK,QAAQ,iBACb,AAAI,KAAK,OAAO,MACd,UAAY,KAAK,OAAO,KAAK,OAAO,QAAU,AAAO,eAAQ,MAAK,MAAO,KAAK,QAAU,GAExF,MAAK,MAAQ,aACb,UAAY,MACZ,UAAY,KAAK,OAAO,KAAK,OAAO,QAAU,KAAM,AAAO,gBAAQ,MAAK,MAAO,KAAK,QAAU,GAC9F,KAAK,KAAK,OAAS,KAAK,MAAM,MAAQ,YAIxC,KAAK,QAAQ,kBACb,AAAI,KAAK,OAAO,MACd,WAAa,KAAK,OAAO,KAAK,QAAQ,QAAU,AAAQ,gBAAQ,MAAK,MAAO,KAAK,QAAU,GAE3F,MAAK,MAAQ,cACb,UAAY,MACZ,WAAa,KAAK,OAAO,KAAK,QAAQ,QAAU,KAAM,AAAQ,iBAAQ,MAAK,MAAO,KAAK,QAAU,GACjG,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,YAEzC,KAAK,QAAQ,gBAGb,KAAK,QAAQ,oBACb,AAAI,KAAK,OAAO,MACd,aAAe,KAAK,OAAO,KAAK,UAAU,QAAU,AAAU,kBAAQ,MAAK,MAAO,KAAK,QAAU,GAEjG,MAAK,MAAQ,gBACb,UAAY,MACZ,aAAe,KAAK,OAAO,KAAK,UAAU,QAAU,KAAM,AAAU,mBAAQ,MAAK,MAAO,KAAK,QAAU,GACvG,KAAK,KAAK,UAAY,KAAK,MAAM,MAAQ,YAE3C,KAAK,QAAQ,gBAGb,AAAI,KAAK,OAAO,OACd,EAAC,OAAQ,UAAW,WAAY,cAAgB,KAAM,SAAQ,IAAI,CAAC,OAAQ,UAAW,WAAY,gBAGpG,KAAK,QAAQ,gBAEb,MAAK,MAAM,UAIX,aAAkB,MAAK,YAAY,aAAe,MAAK,YAAY,aAE/D,KAAO,KAAK,IAAI,KAAK,IAAI,MAAK,YAAY,YAAY,GAAG,GAAK,MAAK,YAAY,YAAY,GAAG,IAAK,KAAK,IAAI,MAAK,YAAY,aAAa,GAAG,GAAK,MAAK,YAAY,aAAa,GAAG,KACnL,EAGJ,QAAQ,KAAK,CACX,WAAY,MAAK,WACjB,IAAK,MAAK,IACV,KAAM,MAAK,KACX,YAAa,MAAK,YAClB,IAAK,OAAO,IACZ,OAAQ,UAAU,OAClB,iBAAkB,UAAU,WAC5B,QAAS,WACT,UAAW,aACX,KAAO,WAAa,EAAK,KAAK,MAAM,UAAY,IAAM,IAExD,KAAK,QAAQ,YAEf,YAAK,QAAQ,iBACb,AAAI,KAAK,OAAO,OACd,CAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,KACrC,AAAI,KAAK,KAAK,KAAK,MAAO,MAAK,KAAK,IACpC,AAAI,KAAK,KAAK,QAAQ,MAAO,MAAK,KAAK,OACvC,AAAI,KAAK,KAAK,SAAS,MAAO,MAAK,KAAK,SAEnC,aAGH,wBAA0B,IAC9B,KAAK,MAAQ,QACb,KAAK,OAAS,UAAU,KAAK,OAAQ,YACrC,aAAgB,AAAM,eAAQ,MAAO,KAAK,QAC1C,gBAAQ,OAAO,UACR,SAAQ,YAIX,yBAA2B,IAE/B,MAAO,IAAI,SAAQ,gBACjB,KAAK,MAAQ,SACb,cAGA,KAAK,OAAS,UAAU,KAAK,OAAQ,YAGrC,KAAK,MAAQ,QACb,UAAc,KAAK,OAAO,OAC1B,AAAI,OACF,KAAI,MAAO,OACX,QAAQ,CAAE,SAGZ,sCAIkB,MAGlB,KAAM,MAAK,eAGX,KAAM,MAAK,OAEX,AAAI,KAAK,OAAO,QAAQ,AAAG,aAAS,aACpC,KAAK,QAAQ,gBAEb,UAAY,MACZ,aAAgB,AAAM,eAAQ,MAAO,KAAK,QAC1C,GAAI,CAAC,UAAW,CAAC,SAAQ,QACvB,IAAI,qCACJ,QAAQ,CAAE,MAAO,sCACjB,OAEF,KAAK,KAAK,MAAQ,KAAK,MAAM,MAAQ,WACrC,KAAK,QAAQ,cAGb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,WAAW,SAAQ,QAAU,GACvE,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,WAAW,SAAQ,QAAU,GAC7E,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAItC,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,OAAO,QAAQ,cAAc,SAAQ,OAAQ,KAAK,QAAU,GACtG,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,OAAO,QAAQ,cAAc,SAAQ,OAAQ,KAAK,QAAU,GAC5G,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAEtC,KAAK,QAAQ,aAGb,KAAK,QAAQ,eACb,AAAI,KAAK,OAAO,MACd,SAAU,KAAK,OAAO,KAAK,QAAU,KAAK,OAAO,SAAS,cAAc,SAAQ,OAAQ,KAAK,QAAU,GACvG,AAAI,KAAK,KAAK,MAAM,MAAO,MAAK,KAAK,MAErC,MAAK,MAAQ,WACb,UAAY,MACZ,QAAU,KAAK,OAAO,KAAK,QAAU,KAAM,MAAK,OAAO,SAAS,cAAc,SAAQ,OAAQ,KAAK,QAAU,GAC7G,KAAK,KAAK,KAAO,KAAK,MAAM,MAAQ,YAKtC,AAAI,KAAK,OAAO,OACd,EAAC,QAAS,QAAS,SAAW,KAAM,SAAQ,IAAI,CAAC,QAAS,QAAS,WAErE,SAAQ,OAAO,UAEf,AAAI,KAAK,OAAO,QAAQ,AAAG,aAAS,WACpC,KAAK,QAAQ,cAEb,eAAiB,GACjB,AAAI,KAAK,OAAO,QAAQ,SACtB,WAAY,MACZ,WAAa,CAAC,GAAG,AAAQ,aAAK,SAAU,GAAG,AAAQ,aAAK,SAAU,GAAG,AAAQ,aAAK,UAClF,AAAK,KAAK,OAAO,MACZ,AAAI,KAAK,KAAK,SAAS,MAAO,MAAK,KAAK,QADrB,KAAK,KAAK,QAAU,KAAK,MAAM,MAAQ,YAIjE,KAAK,KAAK,MAAQ,KAAK,MAAM,MAAQ,WACrC,KAAK,MAAQ,OACb,QAAQ,CAAE,KAAM,QAAS,KAAM,QAAS,KAAM,QAAS,QAAS,WAAY,YAAa,KAAK,KAAM,OAAQ,SAAQ,gBAIlH,oBACJ,cAAkB,aAAgB,6BAA+B,MAAM,QAAQ,eAAe,UAAU,KAAK,KAAS,IAAI,QAE1H,AAAI,YAAY,MAAK,OAAS,UAAU,KAAK,OAAQ,aACrD,UAAc,KAAK,OAAO,eAC1B,KAAK,OAAO,eAAiB,GAC7B,SACA,OAAQ,KAAK,OAAO,YACb,OAAQ,KAAO,KAAM,WAAiB,MAAO,UAC7C,OAAQ,KAAO,KAAM,WAAiB,MAAO,cACzC,KAAO,KAElB,GAAI,CAAC,KAAM,MAAO,MAClB,WAAe,KAAM,mBAAkB,SAC5B,aACI,KAAM,MAAK,OAAO,OAAQ,mBAC9B,MACX,cAAO,QACP,IAAI,SAAU,KAAK,OAAO,OAAS,GAAK,GAAK,QAC7C,KAAK,OAAO,eAAiB,MACtB", + "sources": ["../src/tfjs/tf-node.js", "../src/face/blazeface.js", "../src/face/box.js", "../src/face/util.js", "../src/face/coords.js", "../src/face/facepipeline.js", "../src/face/facemesh.js", "../src/profile.js", "../src/age/age.js", "../src/gender/gender.js", "../src/emotion/emotion.js", "../src/embedding/embedding.js", "../src/body/modelBase.js", "../src/body/heapSort.js", "../src/body/buildParts.js", "../src/body/keypoints.js", "../src/body/vectors.js", "../src/body/decoders.js", "../src/body/decodePose.js", "../src/body/decodeMultiple.js", "../src/body/util.js", "../src/body/modelPoseNet.js", "../src/body/posenet.js", "../src/hand/handdetector.js", "../src/hand/handpipeline.js", "../src/hand/anchors.js", "../src/hand/handpose.js", "../src/gesture/gesture.js", "../src/imagefx.js", "../src/image.js", "../src/human.js", "../src/log.js", "../src/tfjs/backend.js", "../src/hand/box.js", "../src/hand/util.js", "../config.js", "../src/sample.js"], + "sourcesContent": ["export * from '@tensorflow/tfjs-node';\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nconst disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nconst scaleBox = (box, factors) => {\n const starts = tf.mul(box.startPoint, factors);\n const ends = tf.mul(box.endPoint, factors);\n const newCoordinates = tf.concat2d([starts, ends], 1);\n return createBox(newCoordinates);\n};\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nfunction scaleBoxFromPrediction(face, scaleFactor) {\n return tf.tidy(() => {\n const box = face['box'] ? face['box'] : face;\n return scaleBox(box, scaleFactor).startEndTensor.squeeze();\n });\n}\n\nclass BlazeFaceModel {\n constructor(model, config) {\n this.blazeFaceModel = model;\n this.width = config.face.detector.inputSize;\n this.height = config.face.detector.inputSize;\n this.anchorsData = generateAnchors(config.face.detector.inputSize);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = tf.tensor1d([this.width, this.height]);\n this.config = config;\n this.scaleFaces = 0.8;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [detectedOutputs, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.width, this.height]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = tf.sub(resizedImage.div(127.5), 1);\n const batchedPrediction = this.blazeFaceModel.predict(normalizedImage);\n let prediction;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n prediction = concat.squeeze(0);\n } else {\n prediction = batchedPrediction.squeeze(); // when using tfhub model\n }\n const decodedBounds = decodeBounds(prediction, this.anchors, this.inputSize);\n const logits = tf.slice(prediction, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [prediction, decodedBounds, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(detectedOutputs, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n detectedOutputs.dispose();\n boxes.dispose();\n scores.dispose();\n detectedOutputs.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.width, inputImage.shape[1] / this.height],\n };\n }\n\n async estimateFaces(input) {\n const { boxes, scaleFactor } = await this.getBoundingBoxes(input);\n const faces = [];\n for (const face of boxes) {\n const landmarkData = face.landmarks.arraySync();\n const scaledBox = scaleBoxFromPrediction(face, scaleFactor);\n const boxData = scaleBox.arraySync();\n const probabilityData = face.probability.arraySync();\n const anchor = face.anchor;\n const [scaleFactorX, scaleFactorY] = scaleFactor;\n const scaledLandmarks = landmarkData\n .map((landmark) => ([\n (landmark[0] + anchor[0]) * scaleFactorX,\n (landmark[1] + anchor[1]) * scaleFactorY,\n ]));\n const normalizedFace = {\n topLeft: boxData.slice(0, 2),\n bottomRight: boxData.slice(2),\n landmarks: scaledLandmarks,\n probability: probabilityData,\n };\n disposeBox(face.box);\n face.landmarks.dispose();\n face.probability.dispose();\n scaledBox.dispose();\n faces.push(normalizedFace);\n }\n return faces;\n }\n}\n\nasync function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n\nexports.load = load;\nexports.BlazeFaceModel = BlazeFaceModel;\nexports.disposeBox = disposeBox;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\nexports.scaleBoxCoordinates = scaleBoxCoordinates;\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nexports.getBoxSize = getBoxSize;\n\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nexports.getBoxCenter = getBoxCenter;\n\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h, box.startPoint[0] / w, box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nexports.cutBoxFromImageAndResize = cutBoxFromImageAndResize;\n\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.enlargeBox = enlargeBox;\n\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\nexports.squarifyBox = squarifyBox;\n", "exports.IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nexports.normalizeRadians = normalizeRadians;\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nexports.computeRotation = computeRotation;\n\nfunction radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\nexports.radToDegrees = radToDegrees;\n\nfunction buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nexports.dot = dot;\n\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nexports.getColumnFrom2DArr = getColumnFrom2DArr;\n\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nexports.buildRotationMatrix = buildRotationMatrix;\n\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nexports.invertTransformMatrix = invertTransformMatrix;\n\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexports.rotatePoint = rotatePoint;\n\nfunction xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\nexports.xyDistanceBetweenPoints = xyDistanceBetweenPoints;\n", "const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nconst MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nconst UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nconst TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nconst TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\nconst TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\nconst TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nconst VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\nconst VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\nconst VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexports.MESH_ANNOTATIONS = MESH_ANNOTATIONS;\nexports.MESH_TO_IRIS_INDICES_MAP = MESH_TO_IRIS_INDICES_MAP;\n\nexports.TRI468 = TRI468;\nexports.TRI68 = TRI68;\nexports.TRI33 = TRI33;\nexports.TRI7 = TRI7;\n\nexports.UV468 = UV468;\nexports.UV68 = VTX68.map((x) => UV468[x]);\nexports.UV33 = VTX33.map((x) => UV468[x]);\nexports.UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords.js';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\nconst LANDMARKS_COUNT = 468;\nconst MESH_MOUTH_INDEX = 13;\nconst MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [MESH_MOUTH_INDEX, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]];\nconst BLAZEFACE_MOUTH_INDEX = 3;\nconst BLAZEFACE_NOSE_INDEX = 2;\nconst BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES = [BLAZEFACE_MOUTH_INDEX, BLAZEFACE_NOSE_INDEX];\nconst LEFT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst LEFT_EYE_BOUNDS = [LEFT_EYE_OUTLINE[0], LEFT_EYE_OUTLINE[LEFT_EYE_OUTLINE.length - 1]];\nconst RIGHT_EYE_OUTLINE = coords.MESH_ANNOTATIONS['rightEyeLower0'];\nconst RIGHT_EYE_BOUNDS = [RIGHT_EYE_OUTLINE[0], RIGHT_EYE_OUTLINE[RIGHT_EYE_OUTLINE.length - 1]];\nconst IRIS_UPPER_CENTER_INDEX = 3;\nconst IRIS_LOWER_CENTER_INDEX = 4;\nconst IRIS_IRIS_INDEX = 71;\nconst IRIS_NUM_COORDINATES = 76;\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates. Update the z coordinate to be an average of the original and the new. This produces the best visual effect.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n const shouldReplaceAllKeys = keys == null;\n if (shouldReplaceAllKeys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nclass Pipeline {\n constructor(boundingBoxDetector, meshDetector, irisModel, config) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.runsWithoutFaceDetector = 0;\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.meshWidth = config.face.mesh.inputSize;\n this.meshHeight = config.face.mesh.inputSize;\n this.irisSize = config.face.iris.inputSize;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const scaleFactor = [boxSize[0] / this.meshWidth, boxSize[1] / this.meshHeight];\n const coordsScaled = rawCoords.map((coord) => ([\n scaleFactor[0] * (coord[0] - this.meshWidth / 2),\n scaleFactor[1] * (coord[1] - this.meshHeight / 2), coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[LEFT_EYE_BOUNDS[0]][2];\n const rightEyeZ = rawCoords[RIGHT_EYE_BOUNDS[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshHeight,\n box.startPoint[0] / this.meshWidth, box.endPoint[1] / this.meshHeight,\n box.endPoint[0] / this.meshWidth,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip) {\n crop = tf.image.flipLeftRight(crop);\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords = [];\n for (let i = 0; i < IRIS_NUM_COORDINATES; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip\n ? (1 - (x / this.irisSize))\n : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(IRIS_IRIS_INDEX) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][IRIS_UPPER_CENTER_INDEX]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][IRIS_LOWER_CENTER_INDEX]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (detector.boxes.length > 0) && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n this.runsWithoutFaceDetector = 0;\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n // log('face', `skipped: ${this.skipped} max: ${config.face.detector.maxFaces} detected: ${this.detectedFaces} stored: ${this.storedBoxes.length} new: ${detector?.boxes?.length}`);\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n if (config.face.detector.rotation) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= LANDMARKS_COUNT) ? MESH_KEYPOINTS_LINE_OF_SYMMETRY_INDICES : BLAZEFACE_KEYPOINTS_LINE_OF_SYMMETRY_INDICES;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized);\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshHeight, this.meshWidth]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const cloned = input.clone();\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, cloned, [this.meshHeight, this.meshWidth]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours, which are included in the coordinates.\n const confidenceVal = confidence.dataSync()[0];\n if (confidenceVal < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, LEFT_EYE_BOUNDS[0], LEFT_EYE_BOUNDS[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, RIGHT_EYE_BOUNDS[0], RIGHT_EYE_BOUNDS[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, IRIS_NUM_COORDINATES * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(IRIS_NUM_COORDINATES * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left');\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right');\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged. So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData));\n const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox);\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n const prediction = {\n coords: transformedCoords,\n box: landmarksBox,\n faceConfidence: confidenceVal,\n confidence: box.confidence,\n image: face,\n };\n if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords;\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal };\n\n return prediction;\n }));\n results = results.filter((a) => a !== null);\n this.detectedFaces = results.length;\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\nexports.Pipeline = Pipeline;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface.js';\nimport * as facepipeline from './facepipeline.js';\nimport * as coords from './coords.js';\n\nclass MediaPipeFaceMesh {\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel, config);\n this.config = config;\n }\n\n async estimateFaces(input, config) {\n const predictions = await this.facePipeline.predict(input, config);\n const results = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : null;\n const meshRaw = prediction.rawCoords;\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (let key = 0; key < coords.MESH_ANNOTATIONS.length; key++) {\n if (config.face.iris.enabled || key.includes('Iris') === false) {\n annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n }\n }\n const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null;\n\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[2], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[1], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n\n results.push({\n confidence: prediction.confidence || 0,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? tf.clone(prediction.image) : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nasync function load(config) {\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.load = load;\nexports.MediaPipeFaceMesh = MediaPipeFaceMesh;\nexports.triangulation = coords.TRI468;\n", "import { log } from './log.js';\n\nconst profileData = {};\n\nfunction profile(name, data) {\n if (!data || !data.kernels) return;\n const maxResults = 5;\n const time = data.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = data.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: data.newBytes, newTensors: data.newTensors, peakBytes: data.peakBytes, numKernelOps: data.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n profileData[name] = res;\n log('Human profiler', name, res);\n}\n\nexports.run = profile;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nasync function load(config) {\n if (!models.age) {\n models.age = await tf.loadGraphModel(config.face.age.modelPath);\n log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.age;\n}\n\nasync function predict(image, config) {\n if (!models.age) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.age.inputSize, config.face.age.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.age.inputSize, config.face.age.inputSize], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await models.age.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => models.age.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst models = {};\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nasync function load(config) {\n if (!models.gender) {\n models.gender = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = models.gender.inputs[0].shape[3] === 1;\n log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.gender;\n}\n\nasync function predict(image, config) {\n if (!models.gender) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.gender.inputSize, config.face.gender.inputSize], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n return grayscale.sub(0.5).mul(2);\n });\n } else {\n enhance = tf.mul(resize, [255.0]);\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = {};\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await models.gender.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => models.gender.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n const confidence = Math.trunc(100 * Math.abs(data[0] - data[1])) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = confidence;\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surpise', 'neutral'];\nconst models = {};\nlet last = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\nconst scale = 1; // score multiplication factor\n\nasync function load(config) {\n if (!models.emotion) {\n models.emotion = await tf.loadGraphModel(config.face.emotion.modelPath);\n log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.emotion;\n}\n\nasync function predict(image, config) {\n if (!models.emotion) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n /*\n const zoom = [0, 0]; // 0..1 meaning 0%..100%\n const box = [[\n (image.shape[1] * zoom[0]) / image.shape[1],\n (image.shape[2] * zoom[1]) / image.shape[2],\n (image.shape[1] - (image.shape[1] * zoom[0])) / image.shape[1],\n (image.shape[2] - (image.shape[2] * zoom[1])) / image.shape[2],\n ]];\n const resize = tf.image.cropAndResize(image, box, [0], [config.face.emotion.inputSize, config.face.emotion.inputSize]);\n */\n const resize = tf.image.resizeBilinear(image, [config.face.emotion.inputSize, config.face.emotion.inputSize], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await models.emotion.predict(normalize);\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => models.emotion.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (scale * data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * scale * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n\nexports.predict = predict;\nexports.load = load;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile.js';\n\n// based on https://github.com/sirius-ai/MobileFaceNet_TF\n// model converted from https://github.com/sirius-ai/MobileFaceNet_TF/files/3551493/FaceMobileNet192_train_false.zip\n\nconst models = {};\n\nasync function load(config) {\n if (!models.embedding) {\n models.embedding = await tf.loadGraphModel(config.face.embedding.modelPath);\n log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return models.embedding;\n}\n\nfunction simmilarity(embedding1, embedding2) {\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance\n // euclidean distance is limited case where order is 2\n const order = 2;\n const distance = 10.0 * ((embedding1.map((val, i) => (val - embedding2[i])).reduce((dist, diff) => dist + (diff ** order), 0) ** (1 / order)));\n return (Math.trunc(1000 * (1 - distance)) / 1000);\n}\n\nasync function predict(image, config) {\n if (!models.embedding) return null;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [config.face.embedding.inputSize, config.face.embedding.inputSize], false);\n // const normalize = tf.tidy(() => resize.div(127.5).sub(0.5)); // this is -0.5...0.5 ???\n let data = [];\n if (config.face.embedding.enabled) {\n if (!config.profile) {\n const embeddingT = await models.embedding.predict({ img_inputs: resize });\n data = [...embeddingT.dataSync()]; // convert object array to standard array\n tf.dispose(embeddingT);\n } else {\n const profileData = await tf.profile(() => models.embedding.predict({ img_inputs: resize }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n }\n resize.dispose();\n // normalize.dispose();\n resolve(data);\n });\n}\n\nexports.predict = predict;\nexports.simmilarity = simmilarity;\nexports.load = load;\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nconst imageNetMean = [-123.15, -115.90, -103.06];\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nfunction nameOutputResultsResNet(results) {\n const [displacementFwd, displacementBwd, offsets, heatmap] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nclass BaseModel {\n constructor(model) {\n this.model = model;\n }\n\n predict(input, config) {\n return tf.tidy(() => {\n const asFloat = (config.body.modelType === 'ResNet') ? input.toFloat().add(imageNetMean) : input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = (config.body.modelType === 'ResNet') ? nameOutputResultsResNet(results3d) : nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\nexports.BaseModel = BaseModel;\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nclass MaxHeap {\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\nexports.MaxHeap = MaxHeap;\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nfunction buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\nexports.buildPartWithScoreQueue = buildPartWithScoreQueue;\n", "exports.partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexports.NUM_KEYPOINTS = exports.partNames.length;\n\nexports.partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexports.connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([exports.partIds[jointNameA], exports.partIds[jointNameB]]));\n\nexports.poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexports.partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import * as kpt from './keypoints';\n\nfunction getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\nexports.getOffsetPoint = getOffsetPoint;\n\nfunction getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\nexports.getImageCoords = getImageCoords;\n\nfunction fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\nexports.fillArray = fillArray;\n\nfunction clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\nexports.clamp = clamp;\n\nfunction squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\nexports.squaredDistance = squaredDistance;\n\nfunction addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\nexports.addVectors = addVectors;\n\nfunction clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\nexports.clampVector = clampVector;\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nfunction getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\nexports.getPointsConfidence = getPointsConfidence;\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nfunction getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\nexports.getOffsetVectors = getOffsetVectors;\n\nfunction getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\nexports.getOffsetPoints = getOffsetPoints;\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nfunction argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\nexports.argmax2d = argmax2d;\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nfunction decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\nexports.decodePose = decodePose;\n\nasync function decodeSinglePose(heatmapScores, offsets, config) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, config.body.outputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > config.body.scoreThreshold);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\nexports.decodeSinglePose = decodeSinglePose;\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nfunction decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config) {\n const poses = [];\n const queue = buildParts.buildPartWithScoreQueue(config.body.scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = config.body.nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < config.body.maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, config.body.outputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, config.body.outputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > config.body.scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\nexports.decodeMultiplePoses = decodeMultiplePoses;\n", "import * as kpt from './keypoints';\n\nfunction eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nfunction getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\nexports.getAdjacentKeyPoints = getAdjacentKeyPoints;\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nfunction getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\nexports.getBoundingBox = getBoundingBox;\n\nfunction getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\nexports.getBoundingBoxPoints = getBoundingBoxPoints;\n\nasync function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\nexports.toTensorBuffers3D = toTensorBuffers3D;\n\nfunction scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: position.x * scaleX, y: position.y * scaleY },\n })),\n };\n}\nexports.scalePose = scalePose;\n\nfunction resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\nexports.resizeTo = resizeTo;\n\nfunction scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\nexports.scaleAndFlipPoses = scaleAndFlipPoses;\n", "import { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config);\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config) {\n return new Promise(async (resolve) => {\n const height = input.shape[1];\n const width = input.shape[2];\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config);\n const poses = [pose];\n const scaled = util.scaleAndFlipPoses(poses, [height, width], [config.body.inputSize, config.body.inputSize]);\n resolve(scaled);\n });\n}\n\nclass PoseNet {\n constructor(model) {\n this.baseModel = model;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [config.body.inputSize, config.body.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2) ? await estimateSingle(input, res, config) : await estimateMultiple(input, res, config);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\nexports.PoseNet = PoseNet;\n\nasync function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\nexports.load = load;\n", "import * as modelPoseNet from './modelPoseNet';\nimport * as keypoints from './keypoints';\nimport * as util from './util';\n\nexports.load = modelPoseNet.load;\nexports.PoseNet = modelPoseNet.PoseNet;\n\nexports.partChannels = keypoints.partChannels;\nexports.partIds = keypoints.partIds;\nexports.partNames = keypoints.partNames;\nexports.poseChain = keypoints.poseChain;\nexports.getAdjacentKeyPoints = util.getAdjacentKeyPoints;\nexports.getBoundingBox = util.getBoundingBox;\nexports.getBoundingBoxPoints = util.getBoundingBoxPoints;\nexports.scaleAndFlipPoses = util.scaleAndFlipPoses;\nexports.scalePose = util.scalePose;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nclass HandDetector {\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([config.hand.inputSize, config.hand.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / config.hand.inputSize, inputHeight / config.hand.inputSize]));\n }\n return hands;\n }\n}\nexports.HandDetector = HandDetector;\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n// eslint-disable-next-line no-unused-vars\nimport { log } from '../log.js';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nclass HandPipeline {\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands = [];\n // log('hand', `skipped: ${this.skipped} max: ${config.hand.maxHands} detected: ${this.detectedHands} stored: ${this.storedBoxes.length} new: ${boxes?.length}`);\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: {\n topLeft: nextBoundingBox.startPoint,\n bottomRight: nextBoundingBox.endPoint,\n },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: {\n topLeft: enlarged.startPoint,\n bottomRight: enlarged.endPoint,\n },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n\nexports.HandPipeline = HandPipeline;\n", "exports.anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\n// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log.js';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nclass HandPose {\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({\n confidence: prediction.confidence,\n box,\n landmarks: prediction.landmarks,\n annotations,\n });\n }\n return hands;\n }\n}\nexports.HandPose = HandPose;\n\nasync function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, config.hand.inputSize, anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, config.hand.inputSize);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\nexports.load = load;\n", "exports.body = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexports.face = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[35][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexports.hand = (res) => {\n if (!res) return [];\n const gestures = [];\n for (let i = 0; i < res.length; i++) {\n const fingers = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/* eslint-disable no-use-before-define */\n/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nconst WebGLProgram = function (gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) {\n this.attribute[a] = gl.getAttribLocation(this.id, a);\n }\n\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) {\n this.uniform[u] = gl.getUniformLocation(this.id, u);\n }\n};\n\nconst WebGLImageFilter = function (params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _canvas = params.canvas || document.createElement('canvas');\n\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n\n return _canvas;\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n\n // Note sure if this is a good idea; at least it makes texture loading\n // in Ejecta instant.\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n\n gl.viewport(0, 0, _width, _height);\n\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _getTempFramebuffer = function (index) {\n _tempFramebuffers[index] = _tempFramebuffers[index]\n || _createFramebufferTexture(_width, _height);\n\n return _tempFramebuffers[index];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n return { fbo, texture };\n };\n\n const _draw = function (flags) {\n let source = null;\n let target = null;\n let flipY = false;\n\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n source = _getTempFramebuffer(_currentFramebufferIndex).texture;\n }\n _drawCount++;\n\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n target = _getTempFramebuffer(_currentFramebufferIndex).fbo;\n }\n\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n\n // Compile shaders\n _currentProgram = new WebGLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n let DRAW = { INTERMEDIATE: 1 };\n\n let SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n\n let _filter = {};\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n\n const program = _compileShader(_filter.blur.SHADER);\n\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n\n const program = _compileShader(_filter.pixelate.SHADER);\n\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n};\n\nexports.Canvas = WebGLImageFilter;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx.js';\n\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nfunction process(input, config) {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return null;\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!this.fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n this.fx = tf.ENV.flags.IS_BROWSER ? new fxImage.Canvas({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n this.fx.reset();\n this.fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) this.fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) this.fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) this.fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) this.fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) this.fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) this.fx.addFilter('negative');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.vintage) this.fx.addFilter('brownie');\n if (config.filter.sepia) this.fx.addFilter('sepia');\n if (config.filter.kodachrome) this.fx.addFilter('kodachrome');\n if (config.filter.technicolor) this.fx.addFilter('technicolor');\n if (config.filter.polaroid) this.fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) this.fx.addFilter('pixelate', config.filter.pixelate);\n this.fx.apply(inCanvas);\n // read pixel data\n // const gl = outCanvas.getContext('webgl');\n const gl = false;\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n } else {\n outCanvas = inCanvas;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx.drawImage(outCanvas, 0, 0);\n const data = tempCtx.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n return { tensor, canvas: config.filter.return ? outCanvas : null };\n}\n\nexports.process = process;\n", "import { log } from './log.js';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend.js';\nimport * as facemesh from './face/facemesh.js';\nimport * as age from './age/age.js';\nimport * as gender from './gender/gender.js';\nimport * as emotion from './emotion/emotion.js';\nimport * as embedding from './embedding/embedding.js';\nimport * as posenet from './body/posenet.js';\nimport * as handpose from './hand/handpose.js';\nimport * as gesture from './gesture/gesture.js';\nimport * as image from './image.js';\nimport * as profile from './profile.js';\nimport * as config from '../config.js';\nimport * as sample from './sample.js';\nimport * as app from '../package.json';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt(Number(process.hrtime.bigint()) / 1000 / 1000);\n};\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n return prev;\n }, {});\n}\n\nclass Human {\n constructor(userConfig = {}) {\n this.tf = tf;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.fx = null;\n this.state = 'idle';\n this.numTensors = 0;\n this.analyzeMemoryLeaks = false;\n this.checkSanity = false;\n this.firstRun = true;\n this.perf = {};\n // object that contains all initialized models\n this.models = {\n facemesh: null,\n posenet: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n };\n // export raw access to underlying models\n this.facemesh = facemesh;\n this.age = age;\n this.gender = gender;\n this.emotion = emotion;\n this.body = posenet;\n this.hand = handpose;\n }\n\n profile() {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n analyze(...msg) {\n if (!this.analyzeMemoryLeaks) return;\n const current = tf.engine().state.numTensors;\n const previous = this.numTensors;\n this.numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n sanity(input) {\n if (!this.checkSanity) return null;\n if (!input) return 'input is not defined';\n if (tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) {\n return 'input must be a tensor';\n }\n try {\n tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1, embedding2) {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.firstRun) {\n log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);\n await this.checkBackend(true);\n if (tf.ENV.flags.IS_BROWSER) {\n log('configuration:', this.config);\n log('tf flags:', tf.ENV.flags);\n }\n this.firstRun = false;\n }\n\n if (this.config.async) {\n [\n this.models.facemesh,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.posenet,\n this.models.handpose,\n ] = await Promise.all([\n this.models.facemesh || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled ? posenet.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.facemesh) this.models.facemesh = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.body.enabled && !this.models.posenet) this.models.posenet = await posenet.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n }\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.perf.load || 0)) this.perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n async checkBackend(force) {\n if (this.config.backend && (this.config.backend !== '') && force || (tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n log('settings wasm path:', this.config.wasmPath);\n tf.setWasmPaths(this.config.wasmPath);\n const simd = await tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') {\n log('registering humangl backend');\n backend.register();\n }\n\n await tf.setBackend(this.config.backend);\n tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await tf.backend().getGPGPUContext().gl;\n log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await tf.ready();\n this.perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n async detectFace(input) {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes = [];\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.facemesh.estimateFaces(input, this.config);\n this.perf.face = Math.trunc(now() - timeStamp);\n for (const face of faces) {\n this.analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n // run age, inherits face from blazeface\n this.analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face.image, this.config) : {};\n this.perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.analyze('Finish Face:');\n // dont need face anymore\n face.image.dispose();\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n const irisSize = (face.annotations.leftEyeIris && face.annotations.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n confidence: face.confidence,\n box: face.box,\n mesh: face.mesh,\n// AT: boxRaw, meshRaw\n boxRaw: face.boxRaw,\n meshRaw: face.meshRaw,\n annotations: face.annotations,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n });\n this.analyze('End Face');\n }\n this.analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.perf.face) delete this.perf.face;\n if (this.perf.age) delete this.perf.age;\n if (this.perf.gender) delete this.perf.gender;\n if (this.perf.emotion) delete this.perf.emotion;\n }\n return faceRes;\n }\n\n async image(input, userConfig = {}) {\n this.state = 'image';\n this.config = mergeDeep(this.config, userConfig);\n const process = image.process(input, this.config);\n process.tensor.dispose();\n return process.canvas;\n }\n\n // main detect function\n async detect(input, userConfig = {}) {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n let poseRes;\n let handRes;\n let faceRes;\n\n const timeStart = now();\n\n // configure backend\n await this.checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) tf.engine().startScope();\n this.analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.perf.image = Math.trunc(now() - timeStamp);\n this.analyze('Get Image:');\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.detectFace(process.tensor) : [];\n if (this.perf.face) delete this.perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.detectFace(process.tensor) : [];\n this.perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run posenet\n this.analyze('Start Body:');\n if (this.config.async) {\n poseRes = this.config.body.enabled ? this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n if (this.perf.body) delete this.perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n poseRes = this.config.body.enabled ? await this.models.posenet.estimatePoses(process.tensor, this.config) : [];\n this.perf.body = Math.trunc(now() - timeStamp);\n }\n this.analyze('End Body:');\n\n // run handpose\n this.analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose.estimateHands(process.tensor, this.config) : [];\n if (this.perf.hand) delete this.perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose.estimateHands(process.tensor, this.config) : [];\n this.perf.hand = Math.trunc(now() - timeStamp);\n }\n // this.analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, poseRes, handRes] = await Promise.all([faceRes, poseRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) tf.engine().endScope();\n this.analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n gestureRes = [...gesture.face(faceRes), ...gesture.body(poseRes), ...gesture.hand(handRes)];\n if (!this.config.async) this.perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.perf.gesture) delete this.perf.gesture;\n }\n\n this.perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: poseRes, hand: handRes, gesture: gestureRes, performance: this.perf, canvas: process.canvas });\n });\n }\n\n async warmup(userConfig) {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let blob;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (!blob) return null;\n const bitmap = await createImageBitmap(blob);\n const t0 = now();\n const warmup = await this.detect(bitmap, config);\n const t1 = now();\n bitmap.close();\n log('Warmup', this.config.warmup, (t1 - t0), warmup);\n this.config.videoOptimized = video;\n return warmup;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n const gl = config.canvas.getContext('webgl2', config.webGLattr);\n tf.setWebGLContext(2, gl);\n const ctx = new tf.GPGPUContext(gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n tf.ENV.set('WEBGL_VERSION', 2);\n tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', gl.getParameter(gl.MAX_TEXTURE_SIZE));\n tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n }\n}\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport * as tf from '../../dist/tfjs.esm.js';\n\nfunction getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\nfunction getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\nfunction cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\nfunction scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\nfunction enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nfunction shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\nexport {\n cutBoxFromImageAndResize,\n enlargeBox,\n getBoxCenter,\n getBoxSize,\n scaleBoxCoordinates,\n shiftBox,\n squarifyBox,\n};\n", "/**\n * @license\n * Copyright 2020 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nfunction normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\nfunction computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\nconst buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\nfunction dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\nfunction getColumnFrom2DArr(arr, columnIndex) {\n const column = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\nfunction multiplyTransformMatrices(mat1, mat2) {\n const product = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\nfunction buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\nfunction invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\nfunction rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\nexport {\n buildRotationMatrix,\n computeRotation,\n dot,\n getColumnFrom2DArr,\n invertTransformMatrix,\n normalizeRadians,\n rotatePoint,\n};\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.\n // 'front' is optimized for large faces\n // such as front-facing camera and\n // 'back' is optimized for distanct faces.\n inputSize: 256, // fixed value: 128 for front and 256 for 'back'\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 11, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.5, // threshold for discarding a prediction\n iouThreshold: 0.2, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n inputSize: 192, // fixed value\n returnRawData: false, // in addition to standard mesh and box values, return raw normalized values as well\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n inputSize: 64, // fixed value\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age-ssrnet-imdb.json', // can be 'age-ssrnet-imdb' or 'age-ssrnet-wiki'\n // which determines training set for model\n inputSize: 64, // fixed value\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender-ssrnet-imdb.json', // can be 'gender', 'gender-ssrnet-imdb' or 'gender-ssrnet-wiki'\n inputSize: 64, // fixed value\n skipFrames: 41, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n inputSize: 64, // fixed value\n minConfidence: 0.2, // threshold for discarding a prediction\n skipFrames: 21, // how many frames to go without re-running the detector\n modelPath: '../models/emotion-large.json', // can be 'mini', 'large'\n },\n\n embedding: {\n enabled: false,\n inputSize: 112, // fixed value\n modelPath: '../models/mobilefacenet.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json',\n inputSize: 257, // fixed value\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n outputStride: 16, // size of block in which to run point detectopn, smaller value means higher resolution\n // defined by model itself, can be 8, 16, or 32\n modelType: 'MobileNet', // Human includes MobileNet version, but you can switch to ResNet\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n inputSize: 256, // fixed value\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\nCvLhho3rN9RWs9Z23n5y6O21YhrVYbdGOCfrrLPJRpv863zVS6FS09SvZj3lVZZRdPSqmnSWdrIE\nebOkK4ldTsgW1WKqd1oMZhEVZyRAImOjGI6rJ7IiATNd46qL02bHkiaxaoNGY2n4ImPgtyV2n0Vo\nGvlx7x2beiyTk08RPevSVUxux00+Fn2n7N+n5rRFb4AAAAAAAAAAAAAAACLVres1tETWekxKQHlu\nL8InR2nPp43wz3j8P/s5dLveWrFqzW0bxPeJeV4xwmdFec+CJnDM9Y/CrY1xv8qvTZ+WYdbDk5oh\n5zHk283U0eo3jaZZ2N5XYjrCnLSJhOK+8d1kxvCqzSwZvousrb7k9LfJ3nB1OLeJdLhufx9LEWn3\n6e7LXN9Ofy5/W4AuxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAETaKxMzO0Qi9646Ta07RDmZ9VbPbaOlI7Qi3i+c3TPUaqcu9adKfy0722ZXvFa9\nXO1OrjrESxt66ZJmcjPUanlidmhkzTZVfLN5VWvsC2b7R3U3yqrZZtO1esz2h2+F+zWTUcuXXTNM\nfeKR3n5+iZLVbqRzNJo9TxHLyaekz62ntD1fDOA6fQbZL7Zc/wCKY6R8odLBgxabFGPDSKUjyiFj\nSZkYa3aALKAAAAAAAAAAAAAADQ4pl2pTFH3p3n5Q33E12Tn1eSfKscsLZ+orS00eJqbW+Lfnu1tF\nXaJnZsz3WpCfsyp00fWSvmPdVYOmSUDd8kR3InoQosy7JmUX7MdwZ17ro7KKT1XRPRAsrO0rYndr\n79V1ZBaQiJ6JgCSIJASwrO07MpV2nqBlrv1a1o2bf2qtfLXaQUTO0sb05o3jv3ZXhjS20xEphW5h\nyeJjjf7UdJWNKLziyRePsz0lux1SgAQAAAAAAAAAAAAAADG9K5KTS8Rato2mJZAPIcU4ZbQZuekT\nOC3afT4NXFkmlntc2GmoxWx5K71tG0vHa/RX0GpmlutJ61t6wrY2xr8dXS5uesN+tt4ef0eaa223\n2dnHk3juyreM81OaFGiy/RtZET9jJ7s/2bdutd2jqKeic3iNTsd8a2h1H0jTVtP2o6W+bZbOO+gA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABje9cdJt\nadohGTLXFTmvO0fy52bJfU23t0pHaqLeL5xdK9Rnvqb+cUjtCi94xxvK3JetKuHrdZvaa1ljb10y\ncnIs1Wt3naJc++TmVWvMz1YWybfMGdsm3eWek0mo4jm8PT0mfW3lDf4V7P5tdMZdRviwfvZ6/TaX\nDpMMYsFIpWPTzXmf+steT8jn8L4Dp+HxF77Zc/4pjpHydYGjC3oAAAAAAAAAAAAAAAAADG9opS1p\n7RG7zszN6WtPe0zLua+3Joss/wBOzhzG2OsL5+IrY09dsSyYRijbHEMvOChb7KjF0yS2LQ169Mso\nS24noyrPVXWejNVKbTuw3T3REdQWU6LYlVvsyiUDPfqupPRr79VuOQX1lZEqoZxIMksd0gT2VT0l\nbPZVbuCaW8i8bwr32WxbcGnkjaZa9p2ndv5qbw5+aNugLItF6TEtvTX5sMb969HMpfazc0d9stqe\nvVZDdAQAAAAAAAAAAAAAAAADV1+iprtPOO/2u9bektoB4TJTJpNRbHkja1Z6uto8viVht+0HDvpG\nH6Tjj6zHHvbecONw7Ltfkmeqmo6Ma69DXbbZTkr1mGWO3RneOaGbZRoM30fVzSelMnT83aef1FZ7\nx3h1tBqfpGnjmn369LNc3sc3kzy9bQCzIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAa+q1dNNXr7157VhGp1Xh70x+9f9ocy283m1p5rz3mVbrjXHjt91lz\n5c9+fJ1nyjyhdM8lZlOOIiqrUXikd+kMreunnI5XEdX4dZiZcG+XmtNl/F83PeeWWHDOGanieSKY\nq+5H2rz2hMzWd1Iqx1yajJXHhrNrW6REeb1nCPZumn2z62Ivl7xTyr/6uhwzhGn4Zj2xxzZJ+1kn\nvLoNJnjHW7TbbsAszAAAAAAAAAAAAAAAAAAAAaPFrbaSK/itEOXt0rDf4xb/ACa/GZacRvaF58Q2\nIjasQnzPIhCU92tMbZGzHmotG10C6nZkwpPRmipIllEbMIZIE7solgmJBnCyk9VMM6z1BtVllEqK\nz0WRILYlluriWcSDJVbusV27gwInaSWM9ECyZ3hqamnSWxFmOSOaqRx725bNnSZNs9J+OynVY+WZ\nYYr7TE+nVaIr0Ais81Yn1hKAAAAAAAAAAAAAAAAAABExvG09peU4nov9n66L0j6q/WPg9Y1OJaON\nZpL0+9HWs/EWzeVz9PbmrEtnyc3h9reHy26TWdnSr2YX6657ijLXpLX0+onSamL/AHJ6W+Tbv2aW\nekTv16JzeI1Ox6KJiYiY7Slz+E6jxdN4dp3vj6fl5Og2clnKACAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeQRMxEbzO0Q08uqtkma4ulfO3r8lefUePMxWf\ncjy9WvlzVxV6T1Z61/x0Y8f7Wc7Ur1lqVy+LqOWJ2hp6rXddon5rOF1tfmz5OkT0qzb8dWbxjp1c\nbiuuilJ5Z6r+IcQrixzEy8zl1E6rNt1tMztFY81sztU1eRucN4ffi2p5esRM72n0h7rS6XFo8FcO\nCkVpX082nwXh3+z9FWLxHi36328vg6TZyW9ABAAAAAAAAAAAAAAAAAAAAAADj8Unm1tK/hqppHvw\ny1k8/EMk+m0GOPeafiFpCZYwolnXspvHvLa9mF46gmnZmwozRUiUCBKYYsoBLOFbKAX0llEqqyzi\nQXRLOJVRLOOwLIljZMEgrlhKyYYTAK5nZPN0RZjugUanHzVlz6xtLq361c+9eXItPpXX0dubTU+E\nbL2lw2++O1fSW6m/VYAISAAAAAAAAAAAAAAAAAp1GbwcfTreelYEydcuMcRrM/L9nnlsV6wqpi2r\ntv133mfWVkRyRtEdGFva7MzkYZNoamWN4bV4mYa9qztKIujhVppxGI8r1mJegeZpknBqKZY+7L0t\nLRekWrO8TG8Ns/HJ5ZypAWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAADS12fp4VJ6z9qVuq1HgUiI+3bpDl589cOKZmevqprXPTbx477rDJlrhr1nq4+s182tMRP\nRqaziXiZJrWekNG17ZbxWJ336M5LXRbI3dLTJrs07RMY6fan1dHLrowY+X7MVjt6N3R6Kul0EbWm\ns7bz8Z+LnabQX43r7Y53php/mXj+Dnv0f1JO1x/8ZxbUzj02O15mfLtD13AvZqnDds+pmMmo26el\nXX0Wh0/D8EYtNjilY7+s/NstpOOTW7QBKgAAAAAAAAAAAAAAAAAAAAAADG88tLW9I3BwJtz6nNf1\nvK/DHVqYJ3pzT5y3MPZeojOWMQylEKpTVjZnDCwkqzYQyRRICATCITAJZQxhMAshnEq4ZQC2srKq\nqrIBZCWNZZgwswmFloVyCu0dFcx1WyrtCBhv5NTPHXds2U5o3hIz4ffbPt+KHUcTSW5c9Jme0u2v\nVYAKpAAAAAAAAAAAAAAAAYZctcVOa35R6tLrltN795/YvknNqrfhpPLH92V5isd9mWq6fHjk6rn0\nZxG8KK5Jm/wbVZiYZtqrmkqL023bkxvCiY3lJHNyRG81mHS4Rn5sNsNp64+3yaWaNrzOzHBl+i6q\nmT7s9J+S+ay8mex6EIneN47SNXKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAImYiJme0JafEs3h6fkidrZOn5eaLeJk7eOdm1Hi2vmtPTry/CHmOJcUvmvOPF1n09Pm\n6HF9ZGm01qxO3R5vSY7XwzmzTy47zzTEd7en5Mfvt2/PURWdo3tvPrPlKymbktFqTtMTvHzbOLDG\nf63JXbFX7FdnoODcDprZpq9TjiMMTvSn4vj8l5fxnrk91saPSa7i2hpOfbTVt5x1m0fLydzR6PDo\ndPGHBXasd585n1lsRERG0dIF5OOe6tAEqgAAAAAAAAAAAAAAAAAAAAAAADX11+TRZrf0y2Gjxe22\ngtH4piP3TPpXKwxtjhuYo9xq442iIblI2pC1RET2ILd9kxCqRjZmwlCSEohIJAQAAJZISDKGUd2M\nMoBnVbVVCyAWVWeSuqyOwIlXZZKue4MJV2WWYT2QKbKL9YlfdRdIo35b7/Hd3KTzUrPrDh27uxpb\nc2mpPwX/ABX9XAKpAAAAAAAAAAAAAACekTIp1eTwtJmv+GkyJn1oafeazbfpMzLR4jq/o8b823zX\n6XNF8ERCvTcNpxLV5LauvPhx9Irv3lhztdtv8TtaWLicXrt03jzjzb2k1nid56ty3s/w+a7Uwzjn\n1raejlarhmbhl/FpbxMO/fzj5p/ixSeXOvTtRfeI280ZI26tfDm3pWe63LaZx7qtGvniJ6tPLvOK\nfOa9WzbJvTbza02jl3n5SSljscK1MajSxWZ96nSW88xw/VfQ9XMT9nfa3yemid43jtLeXsce88qQ\nEqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADia3UTm1l4j7OP3Y/u\n7Vp2rM+kPJW1PhYcmS0+9MzKm/jbwz31weMzbV8UppazPL9q0/BF4rk1GLDSNqxPWPhCnHmnNrtT\nqPKteWPm6U6OdHaZvO+SaRNvhv12Ub/q3FhtrNVj0uKOt56z6R5y9zix1w4qY6RtWsREOJ7L6OKa\nS2rvX6zNM7T6Vh3mmZyOfya7eACzIAAAAAAAAAAAAAAAAAAAAAAAAAAczjVvqMVfW/8AZ03I41bf\nLp6/OVs/UVrY47NyOzUxd4bUJpEbb3Z7IiOrKIVSjZhMLJYyhKIgmGUQSDESIEbJEgQmCITEAmGU\nIiGUAyhZVhDOoM4Wx2VQtqBKuyyWEgqlhKyyuyBVaGtkbNmvk7A15l1eH2300R6TMORPSXT4ZO+O\n8fFefEX63gEAAAAAAAAAAAAAAAq1WPxdLlp+Kkx+y1Fvsz8gjhaDauGK8sx07y3OE3m1tT6RaP4c\nvU6yMNKUx73zT0ilY3l2eF6a+m0kRl/zbzz3+Ez5M8z26fJruW6wzYq5sV8d43raNpZjRzPPaTmx\n5b6bJ9rHO3zb2WJ8GWPEscY9bgzxH2t62n19GWW0eHOzHU5XbjXZ1x8WTnz2iZ7S2M1IjH2+LX0V\nKTqs8zO9ot0j8nUthi1J3UaOFMTfLFo6xMbS9BwHWTqdHOO8+/hnln5eTjYMFo1WTH5VnePzXcIm\n2k4zlpPSmXy/hfF5eMfJns69OA2cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAADG/2LfJ874rW845mubliY7bPoto5qzHrDz0+yePNF41OotaJ7RWNtpV1OtfHqZ715fhu\nj8adNpcVfeyzE2/vLuanhOu1nEctIxTTFa/+ZPbZ3eHcF0vDbTfFE2yzG03t32+DokynXl9+leDB\nTTYKYccbUpWIhYCzEAAAAAAAAAAAAAAAAAAAAAAAAAAAAcXjE/4zDH9M/wAu04XF5/3jj/0f3Wz9\nRUYmzDWxS2I7FSyjuzY1ZKpRKEygEwiWUIkGIk2QJNhKQhMIhkCYZQxhlAMoZwwZwgWQshVCyATL\nCWc9ldpBhZXLOVdpQK7NfJPRdaWvknoDVvPvOnwuel4+TlXn3nS4VPvXj4QtEV0wAAAAAAAAAAAA\nAAAAAVV02CmTxK4qRf8AFFeq0AAAanEsfPpZmO9Ji0NDLfkwdOsulrumiyzHlVzJrz4Ovoy26vB8\ncTBa9NffLtMY77Rv8Yegx5ImkKdJoY1HC81Y+3OSbVn0mGGkmbY45u6tnrrTOu2xGO0RxCd+nNVj\nqKxTV1vH2pjaGtnyzXXYdo96ZmGXEMk15b7/AGZiVerWPTYckZcNbx5wzc7hGbnxXxzPWk7x8pdF\n0S9jh1OXgAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAcPjEf4/FP9H93ccXjMf4vDP9Mx+62fqKrx+S+GvibEFSsqyYwlVK\nZYsmIMoRKYJQIPIEiQ2ATCUQygCGUIhMAyhnDCGUIFkLIV1ZxIMpVWWSrsCuyqyyyq09ECq8tfJK\n66jJ2Bp5J6upwn7dv9Lk5J951uE/av8AJaIrqAAAAAAAAAAAAAAAAAAAAAAq1Mc2myxPnWf4cmtu\nXT9fR0tffk0WSe28bfq5Wbamm3326MtunwfK6PCv/AxPraZ/dz9PO97/AOqf5dHhdZrw7Dv3mOb9\nXOxRFM+avpe38mvkPHf/AFWlrKba7Tzt99ZxKkfR7euyNXMTrtPHfa0z+zPiM/UR8Zj+Wbdu8HpN\nM2bfzrV13M4dO2pyR61dNvj44/J/oAWZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj8bj63BPzdhyeNx0wz8ZWz9RWri7Nmv\nVrYu0NmqaRZHZlDGGSiwxZSgCEkCBCQSCQBMJRCYgEsoYx3Z17AlMIhlCBnDOGEM4AlhZZKq4KrK\n7LLKrIFN2vdfZReAaObu6/CO9vk5OePR1uEd7fJeIrqAIAAAAAAAAAAAAAAAAAAAAGtxCk5NFliI\n3mI32+XVyNTyZOHTee946PQKPoeDffw4777eW/yVs60xv+ZxOnr4Okx1t05KRv8Ao41Z5q3yed5m\nXY1szXRZ5jvFJ/hxItP0aOSN9q7yrtr4f2tHFM5+KT16Yq/vK/iGSbXw4vO14UcPx5MGfNbPG18m\n1oj4THRsTw7VanPXVYpi3gzMcnrvCnG11JOupwuN8+a3pEQ6jT4divjxWnJExa09pbjbM5HHu90A\nJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAHM41H1GOf6nTc/jEf4Ws+lls/UX45uGekNujTwdm5RNIthKIZKLDFlsiQIShIC\nEgCUJ7AmGTGO7IDzZQhMSDJMMYZQgZwzhhDOATuqssmVdgVWVWWyqtCBTeVF19lF+wNLNG7q8I+9\n8nLyupwnt+S8RXUAQAAAAAAAAAAAAAAAAAAAAAAItWL1mto3iY2lyrcLyUxzix2ia2nvPeK+jrCL\nOrTVnxpanhuPPemSs8l6RtE7dJj0ldpNP9GwRSZ3neZmV4cR/Vs4AJQAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHi1d9H\nM+kt5ra+vPoskfDdOfqK4mn7Q3aNHBPZu0W0RdDOGFWcKLCJZeTGQQlCQSgASBsCYZQxhlAJTAmA\nTsmAgGcM4YQyjsgRLC3VnaVcgwsrt3Z2V2QK7tbJ1bN5a9waeWO7p8Knt8nNyebpcK8vkvlFdQBA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK9RXmwZI+ErEWjesx6wQeZwejeo0cccuW8\nelpblJaaRGxVnCuss4ZrMvJEgCAASISCQIBlCYYpieoM0wx8k7gzIRueYM4Z79FcSy3QEsLJmWFp\nBjaVVpZWlXMoGNmvkXXlr3kGtknu6XCf7OXkl1OEdl8orqgIAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAHmskcmtzV/rls0U62OXiWX4zErcc9GmkRfWVkSqqziWayxCPIANwBIhIJSxS\nCRG6dwZwlhEs4BluMdzfqgZxLLdXuy3AmVdpZTKuZBjaVVpWWV2QlhZRdfZRcGpl7urwfrzfJy8r\nrcH61vPyWitdMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA4nHLxKZ9awnH2ZcY\njbW459aq8fZpfiI2IZwrqzhmsz3Ebm4JN0AMhCQSIASndiAziWUSriWcAyRujc80DM3RCfIETLCW\nUsZEsJYSslXZAwlTddPZTkBp5e7r8Gj6rJPxhx8k9Xa4PG2C8/FaK10QAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAcfjcbZMFvnDWx9m5x2PqcNvS+zSxT7sNPxH62YZQwqzhRZO6UCB\nKUAJTux3SDIRuAncQAmJZRLBMSgZ7iIAZRKd2DICUSlAljLCYWMLIFVukNfI2bNbIDTyT7zu8Ijb\nSz/qcG/2nf4T/wCE/wD2WnxWt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL9oL\n+Hw2cm28VvEuPptfgyVj6yIn0no7/FtJfW8NzYMe3PaPd39d3iMug1WktNc2C9dvPbeP1aZ9xF+v\nT471tHu2iflK2HkqWmvaZj5Surqc9Ps5bx+alTHqYHm68S1Vf/NmfnC2vGNTXvyT84Ql6A3cSvHM\nsfaxVn5Ssrxyv3sM/lKB1xza8bwT3pePyWV4tpZ+/MfOEjfGrXiGlt2zV/PotrqcN/s5aT/+wLRj\nFontMSlAlKEgndO6IAZQljDIEgeQljLCzOVdkCu/SGrkbF56NPNeKxMzMRHxENe0+89DwuNtHHzl\n5PJr8NcnLW3Pbf7r1nCZm2gpae8zMrz4i/W6AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAETETG0xukB4HVaeMHEtRi26RedvkyjBSfX9W77QYvC4xz7dMlYlrU7M929dWJLFc6aPK0q\n7YLxPS0S22FlP6q38Zac0yR92s/KVc3tHfFf8tpbcsLRvB/dR/8ALLVnU0r9uL1+dZI1mnmdvGpv\n6TOy6ym+Oto2tWJ+cJ/tW+KLK5KW+zes/KU7tG+h01p64qx8Y6NXNo6Y+uPJlp8rLf0rfG7MXtHa\n0x8pZxqs9e2a8f8A7Oj7HaTHn0+f6RWM23LETfr6vRW4PoL99NT8ui7F4+vEdXXtnt+fVbXjGsr/\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n"], + "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,0BAGP,CACb,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,WAEhI,CAAC,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAC3J,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5J,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,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CV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,UC/viBd,uCAmBA,QAAoB,4CACU,gDACA,2CACL,8BAtBzB,AAwBA,qBAAyB,CACvB,MAAO,CAAC,EAAG,EAAG,EAAG,GACjB,YAAa,CAAC,EAAG,EAAG,EAAG,GACvB,aAAc,CAAC,EAAG,GAAI,GAAI,IAC1B,WAAY,CAAC,GAAI,GAAI,GAAI,IACzB,MAAO,CAAC,GAAI,GAAI,GAAI,IACpB,SAAU,CAAC,aA9Bb,MAkCE,0BACE,KAAK,aAAe,mBAGf,kBACL,MAAO,uBAGH,8BACJ,gBAAoB,KAAM,MAAK,aAAa,cAAc,MAAO,SACjE,GAAI,CAAC,YAAa,MAAO,GACzB,UAAc,GACd,qBAAyB,cACvB,gBAAoB,GACpB,GAAI,WAAW,UACb,cAAkB,QAAO,KAAK,kBAC5B,YAAY,KAAO,iBAAiB,KAAK,IAAI,OAAW,WAAW,UAAU,QAGjF,QAAY,WAAW,IAAM,CAC3B,KAAK,IAAI,EAAG,WAAW,IAAI,QAAQ,IACnC,KAAK,IAAI,EAAG,WAAW,IAAI,QAAQ,IACnC,KAAK,IAAI,MAAM,MAAM,GAAI,WAAW,IAAI,YAAY,IAAM,WAAW,IAAI,QAAQ,GACjF,KAAK,IAAI,MAAM,MAAM,GAAI,WAAW,IAAI,YAAY,IAAM,WAAW,IAAI,QAAQ,IAC/E,EACJ,MAAM,KAAK,CACT,WAAY,WAAW,WACvB,IACA,UAAW,WAAW,UACtB,cAGJ,MAAO,SAGX,SAAQ,SAAW,SAEnB,8BACE,qCAA2C,KAAM,SAAQ,IAAI,CAC3D,QAAO,KAAK,QAAU,AAAG,mBAAe,QAAO,KAAK,SAAS,UAAW,CAAE,UAAW,QAAO,KAAK,SAAS,UAAU,SAAS,eAAkB,KAC/I,QAAO,KAAK,UAAY,AAAG,mBAAe,QAAO,KAAK,SAAS,UAAW,CAAE,UAAW,QAAO,KAAK,SAAS,UAAU,SAAS,eAAkB,oBAE9H,GAAiB,2BAAa,kBAAmB,QAAO,KAAK,UAAmB,8BAChF,GAAiB,2BAAa,aAAc,cAAe,QAAO,KAAK,oBAC3E,GAAI,UAAS,cAC9B,MAAI,SAAO,KAAK,SAAS,IAAI,eAAe,QAAO,KAAK,SAAS,UAAU,MAAM,YAAY,MAC7F,AAAI,QAAO,KAAK,WAAW,IAAI,eAAe,QAAO,KAAK,SAAS,UAAU,MAAM,YAAY,MACxF,SAET,SAAQ,KAAO,QCnFf,+CAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,KAE9B,cAAkB,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,wBACxC,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,mBAC/C,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,QACtD,AAAI,MAAQ,WAAa,YAAe,UAAU,SAAS,EAAI,KAAK,SAAS,GAAO,WAAW,SAAS,EAAI,KAAK,SAAS,EAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,cAC3J,AAAI,MAAQ,WAAc,UAAU,SAAS,EAAI,KAAK,SAAS,EAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,oBACrG,AAAI,MAAQ,YAAe,WAAW,SAAS,EAAI,KAAK,SAAS,GAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,qBAG5G,iBAAqB,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,8BACxC,IAAI,GAAG,UAAU,KAAK,GAAQ,EAAE,OAAS,iBAC/D,AAAI,cAAgB,eAAe,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,WAAY,aAAa,SAAS,EAAI,cAAc,SAAS,EAAK,OAAS,YAElJ,MAAO,WAGT,SAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,GAAI,IAAI,GAAG,MAAQ,IAAI,GAAG,KAAK,OAAS,GACtC,cAAkB,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,KAAK,GACxD,AAAI,KAAK,IAAI,WAAa,GAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,kBAC3D,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,UAAU,UAAY,EAAI,QAAU,WAC3E,aAAiB,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IACvH,AAAI,SAAW,IAAK,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,mBACtD,cAAkB,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,GAAK,IAAI,GAAG,KAAK,KAAK,IACxH,AAAI,UAAY,IAAK,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,oBACvD,cAAkB,KAAK,IAAI,IAAK,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,IAAI,IAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,GAAK,IAAI,GAAG,KAAK,KAAK,KACzI,AAAI,UAAY,IAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,SAAS,KAAK,MAAM,qBAC1E,cAAkB,IAAI,GAAG,KAAK,KAAK,GACnC,AAAI,KAAK,IAAI,WAAa,IAAI,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,QAAQ,UAAY,EAAI,KAAO,WAGnG,MAAO,WAGT,SAAQ,KAAO,MACb,GAAI,CAAC,IAAK,MAAO,GACjB,aAAiB,GACjB,UAAa,EAAG,EAAI,IAAI,OAAQ,KAC9B,YAAgB,GAChB,qBAA4B,QAAO,QAAQ,IAAI,GAAG,aAChD,AAAI,SAAW,YAAY,QAAQ,KAAK,CAAE,KAAM,OAAO,cAAe,SAAU,IAAI,KAEtF,GAAI,SAAW,QAAQ,OAAS,GAC9B,YAAgB,QAAQ,OAAO,UAAc,KAAK,SAAS,GAAK,EAAE,SAAS,GAAK,KAAO,WACvE,QAAQ,OAAO,UAAc,KAAK,SAAS,GAAK,EAAE,SAAS,GAAK,KAAO,GACvF,SAAS,KAAK,CAAE,KAAM,EAAG,QAAS,GAAG,QAAQ,gBAAgB,QAAQ,aAGzE,MAAO,aCvDT,sCAOA,iBAAqB,yCACnB,aAAiB,mCACf,MAAU,GAAI,QAAO,MAAQ,OAAS,eAAgB,MACtD,OAAO,QAAQ,EAAG,cAChB,YAAW,MAAQ,EACZ,kBAIM,sBACf,WAAe,GAAG,aAAa,MAI/B,GAHA,GAAG,aAAa,OAAQ,QACxB,GAAG,cAAc,QAEb,CAAC,GAAG,mBAAmB,OAAQ,GAAG,gBACpC,KAAM,IAAI,OAAM,4BAA6B,GAAG,iBAAiB,SAEnE,MAAO,SAGT,KAAK,QAAU,GACf,KAAK,UAAY,GAEjB,SAAa,SAAS,aAAc,GAAG,oBAC1B,SAAS,eAAgB,GAAG,iBAOzC,GALA,KAAK,GAAK,GAAG,gBACb,GAAG,aAAa,KAAK,GAAI,MACzB,GAAG,aAAa,KAAK,GAAI,MACzB,GAAG,YAAY,KAAK,IAEhB,CAAC,GAAG,oBAAoB,KAAK,GAAI,GAAG,aACtC,KAAM,IAAI,OAAM,yBAA0B,GAAG,kBAAkB,KAAK,KAGtE,GAAG,WAAW,KAAK,IAGnB,SAAS,aAAc,YAAa,KAAK,WACzC,YAAgB,MAAK,UACnB,KAAK,UAAU,GAAK,GAAG,kBAAkB,KAAK,GAAI,GAIpD,SAAS,aAAc,UAAW,KAAK,SACvC,SAAS,eAAgB,UAAW,KAAK,SACzC,YAAgB,MAAK,QACnB,KAAK,QAAQ,GAAK,GAAG,mBAAmB,KAAK,GAAI,qBAI5B,iBACvB,AAAK,QAAQ,QAAS,IACtB,eAAiB,iBACI,kBACF,4BACY,qBACP,CAAC,KAAM,mBACZ,UACN,WACC,iBACM,qBACE,aACN,OAAO,QAAU,SAAS,cAAc,8BAG5B,MAEjB,QAAQ,WAAW,SAC9B,GAAI,CAAC,GAAI,KAAM,IAAI,OAAM,+BAEzB,KAAK,UAAY,eAEf,SAAa,MAAM,UAAU,MAAM,KAAK,UAAW,UACpC,QAAQ,MAEvB,aAAa,KAAK,CAAE,KAAM,OAAQ,QAGpC,KAAK,MAAQ,WACX,aAAe,IAGjB,KAAK,MAAQ,iBAcX,GAbA,QAAQ,OAAM,MAAO,OAAM,QAC3B,WAAa,EAGb,AAAK,gBAAgB,gBAAiB,GAAG,iBACzC,GAAG,YAAY,GAAG,WAAY,gBAC9B,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,SAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,SAC1D,GAAG,WAAW,GAAG,WAAY,EAAG,GAAG,KAAM,GAAG,KAAM,GAAG,cAAe,QAGhE,aAAa,SAAW,EAE1B,eACO,QAGT,UAAa,EAAG,EAAI,aAAa,OAAQ,KACvC,aAAgB,IAAM,aAAa,OAAS,EAC5C,MAAU,aAAa,GACvB,EAAE,KAAK,MAAM,KAAM,EAAE,MAAQ,IAG/B,MAAO,UAGT,YAAgB,uBAEd,GAAI,QAAU,QAAU,SAAW,QAAW,OAQ9C,GANA,QAAQ,MAAQ,MAChB,OAAS,MACT,QAAQ,OAAS,OACjB,QAAU,OAGN,CAAC,eAEH,aAAiB,GAAI,cAAa,CAChC,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EACrC,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAGrC,AAAC,cAAgB,GAAG,eAAgB,GAAG,WAAW,GAAG,aAAc,eACnE,GAAG,WAAW,GAAG,aAAc,SAAU,GAAG,aAI5C,GAAG,YAAY,GAAG,+BAAgC,IAGpD,GAAG,SAAS,EAAG,EAAG,OAAQ,SAG1B,kBAAoB,CAAC,KAAM,2BAGD,gBAC1B,yBAAkB,OAAS,kBAAkB,QAC1C,0BAA0B,OAAQ,SAE9B,kBAAkB,kCAGO,uBAChC,QAAY,GAAG,oBACf,GAAG,gBAAgB,GAAG,YAAa,KAEnC,iBAAqB,GAAG,qBACxB,GAAG,iBAAiB,GAAG,aAAc,cAErC,YAAgB,GAAG,gBACnB,UAAG,YAAY,GAAG,WAAY,SAC9B,GAAG,WAAW,GAAG,WAAY,EAAG,GAAG,KAAM,MAAO,OAAQ,EAAG,GAAG,KAAM,GAAG,cAAe,MAEtF,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,QAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,mBAAoB,GAAG,QAC1D,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eACtD,GAAG,cAAc,GAAG,WAAY,GAAG,eAAgB,GAAG,eAEtD,GAAG,qBAAqB,GAAG,YAAa,GAAG,kBAAmB,GAAG,WAAY,QAAS,GAEtF,GAAG,YAAY,GAAG,WAAY,MAC9B,GAAG,gBAAgB,GAAG,YAAa,MAE5B,CAAE,IAAK,gBAGF,gBACZ,WAAa,YACA,WACD,GAGZ,AAAI,aAAe,EAEjB,OAAS,eAGT,OAAS,oBAAoB,0BAA0B,QAEzD,aAGA,AAAI,cAAgB,CAAE,OAAQ,KAAK,cAGjC,QAAS,KACT,MAAQ,WAAa,IAAM,GAG3B,0BAA4B,0BAA2B,GAAK,EAC5D,OAAS,oBAAoB,0BAA0B,KAIzD,GAAG,YAAY,GAAG,WAAY,QAC9B,GAAG,gBAAgB,GAAG,YAAa,QAEnC,GAAG,UAAU,gBAAgB,QAAQ,MAAQ,MAAQ,GAAK,GAC1D,GAAG,WAAW,GAAG,UAAW,EAAG,mBAGV,yBACrB,GAAI,oBAAoB,gBACtB,uBAAkB,oBAAoB,gBACtC,GAAG,WAAW,gBAAgB,IACvB,gBAIT,gBAAkB,GAAI,cAAa,GAAI,OAAO,gBAAiB,gBAE/D,cAAkB,aAAa,2BACd,EAAI,UACrB,UAAG,wBAAwB,gBAAgB,UAAU,KACrD,GAAG,oBAAoB,gBAAgB,UAAU,IAAK,EAAG,GAAG,MAAO,GAAO,SAAU,EAAI,WACxF,GAAG,wBAAwB,gBAAgB,UAAU,IACrD,GAAG,oBAAoB,gBAAgB,UAAU,GAAI,EAAG,GAAG,MAAO,GAAO,SAAU,EAAI,WAEvF,oBAAoB,gBAAkB,gBAC/B,sBAGE,CAAE,aAAc,UAEd,GACb,OAAO,gBAAkB,CACvB,yBACA,sBACA,qBACA,oBACA,uBAEA,oBACA,YACA,mDACA,KACA,KAAK;AAAA,GAEP,OAAO,kBAAoB,CACzB,yBACA,oBACA,6BAEA,oBACA,0CACA,KACA,KAAK;AAAA,GAEP,YAAc,GAKd,QAAQ,YAAc,iBAEpB,MAAU,GAAI,cAAa,QAC3B,EAAE,IAAM,IACR,EAAE,IAAM,IACR,EAAE,KAAO,IACT,EAAE,KAAO,IAGT,WAAgB,EAAE,MAAQ,GAAK,EAAE,KAAO,GAAK,EAAE,KAAO,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,GAAK,EAAE,MAAQ,EAC7H,QAAQ,YAAY,OAAO,cAC3B,QAAQ,YAAY,OAAO,mBAEf,eAAe,QAC/B,GAAG,WAAW,QAAQ,QAAQ,EAAG,GACjC,SAGF,QAAQ,YAAY,OAAS,GAC7B,QAAQ,YAAY,OAAO,WAAa,CACtC,yBACA,oBACA,6BACA,uBAEA,oBACA,oCACA,6EACA,6EACA,kFACA,kFACA,KACA,KAAK;AAAA,GACP,QAAQ,YAAY,OAAO,cAAgB,CACzC,yBACA,oBACA,6BACA,uBAEA,oBACA,oCACA,gEACA,gEACA,oEACA,wBACA,KACA,KAAK;AAAA,GAEP,QAAQ,WAAa,qBACnB,MAAW,aAAc,GAAK,EAC9B,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,iBACnB,MAAW,SAAU,GAAK,EAAI,EAAI,IACtB,GAAI,GAAK,IACrB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,WAAW,KAGrB,QAAQ,SAAW,iBACjB,MAAW,SAAU,GAAK,IAChB,KAAQ,GAAI,GAEtB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,SAAW,WACjB,QAAQ,SAAS,KAGnB,QAAQ,IAAM,mBACZ,SAAY,WAAY,GAAK,IAAM,KAAK,GACxC,QAAY,KAAK,IAAI,cACT,KAAK,IAAI,eACR,UACA,UACA,KAEb,QAAQ,YAAY,CAClB,KAAO,IAAO,GAAI,MAAQ,IAAO,CAAC,KAAO,KAAO,IAAO,CAAC,KAAQ,IAAO,CAAC,KAAO,KAAO,IAAO,CAAC,KAAQ,IAAO,GAAI,MAAO,EAAG,EAC3H,KAAO,IAAO,CAAC,KAAQ,IAAO,KAAQ,KAAO,IAAO,GAAI,MAAQ,IAAO,IAAQ,KAAO,IAAO,CAAC,KAAQ,IAAO,MAAS,EAAG,EACzH,KAAO,IAAO,CAAC,KAAQ,IAAO,CAAE,GAAI,MAAQ,KAAO,IAAO,CAAC,KAAQ,IAAO,KAAO,KAAO,IAAO,GAAI,MAAQ,IAAO,KAAO,EAAG,EAC5H,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,oBAAsB,WAC5B,QAAQ,YAAY,CAClB,SAAW,QAAW,SAAW,EAAG,MACpC,SAAW,QAAW,SAAW,EAAG,MACpC,SAAW,QAAW,SAAW,EAAG,MACpC,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,MAAQ,WACd,QAAQ,YAAY,CAClB,KAAO,SAAW,UAAY,EAAG,EACjC,KAAO,SAAW,UAAY,EAAG,EACjC,KAAO,SAAW,UAAY,EAAG,EACjC,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,QAAU,WAChB,QAAQ,YAAY,CAClB,kBAAoB,mBAAqB,mBAAqB,EAAG,kBACjE,qBAAuB,kBAAoB,mBAAqB,EAAG,mBACnE,mBAAqB,oBAAsB,mBAAqB,EAAG,mBACnE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,eAAiB,WACvB,QAAQ,YAAY,CAClB,kBAAoB,kBAAoB,oBAAsB,EAAG,kBACjE,mBAAqB,kBAAoB,mBAAqB,EAAG,kBACjE,kBAAoB,mBAAqB,kBAAoB,EAAG,kBAChE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,YAAY,CAClB,mBAAoB,mBAAqB,oBAAsB,EAAG,kBAClE,oBAAsB,mBAAoB,oBAAsB,EAAG,mBACnE,oBAAsB,mBAAqB,mBAAoB,EAAG,kBAClE,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,YAAc,WACpB,QAAQ,YAAY,CAClB,mBAAoB,mBAAqB,oBAAsB,EAAG,mBAClE,mBAAqB,mBAAoB,oBAAsB,EAAG,mBAClE,kBAAoB,mBAAqB,kBAAmB,EAAG,mBAC/D,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,SAAW,WACjB,QAAQ,YAAY,CAClB,MAAO,MAAQ,MAAQ,EAAG,EAC1B,MAAQ,MAAO,MAAQ,EAAG,EAC1B,MAAQ,MAAQ,MAAO,EAAG,EAC1B,EAAG,EAAG,EAAG,EAAG,KAIhB,QAAQ,WAAa,WACnB,QAAQ,YAAY,CAClB,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,KAOhB,QAAQ,YAAc,iBACpB,MAAU,GAAI,cAAa,mBACR,EAAI,kBACJ,EAAI,gBAEP,eAAe,QAAQ,YAAY,QACnD,GAAG,WAAW,QAAQ,QAAQ,EAAG,GACjC,GAAG,UAAU,QAAQ,QAAQ,GAAI,WAAY,YAC7C,SAGF,QAAQ,YAAY,OAAS,CAC3B,yBACA,oBACA,6BACA,mBACA,sBAEA,oBACA,2CACA,4DACA,mEAEA,6DACA,sCACA,6DAEA,oEACA,6DACA,4CAEA,kBACA,yCACA,yCACA,wCACA,0BACA,KACA,KAAK;AAAA,GAEP,QAAQ,YAAc,WACpB,QAAQ,YAAY,KAAK,KAAM,CAC7B,EAAG,EAAG,EACN,EAAG,GAAI,EACP,EAAG,EAAG,KAIV,QAAQ,OAAS,WACf,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAI,EAAG,EACP,GAAI,EAAG,EACP,GAAI,EAAG,KAIX,QAAQ,OAAS,WACf,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAI,GAAI,GACR,EAAG,EAAG,EACN,EAAG,EAAG,KAIV,QAAQ,QAAU,iBAChB,MAAU,QAAU,EACpB,QAAQ,YAAY,KAAK,KAAM,CAC7B,EAAG,GAAK,EAAG,EACX,GAAK,EAAG,EAAI,EAAI,EAAG,GAAK,EACxB,EAAG,GAAK,EAAG,KAIf,QAAQ,OAAS,eACf,MAAU,MAAQ,EAClB,QAAQ,YAAY,KAAK,KAAM,CAC7B,GAAK,EAAG,GAAK,EAAG,EAChB,GAAK,EAAG,EAAG,EAAI,EACf,EAAG,EAAI,EAAG,EAAI,KAOlB,QAAQ,KAAO,eACb,cAAmB,KAAO,EAAK,iBACZ,KAAO,EAAK,gBAEf,eAAe,QAAQ,KAAK,QAG5C,GAAG,UAAU,QAAQ,QAAQ,GAAI,EAAG,WACpC,MAAM,KAAK,cAGX,GAAG,UAAU,QAAQ,QAAQ,GAAI,UAAW,GAC5C,SAGF,QAAQ,KAAK,OAAS,CACpB,yBACA,oBACA,6BACA,mBAEA,oBACA,4BACA,8FACA,yFACA,wFACA,wFACA,wFACA,uFACA,uFACA,uFACA,uFACA,uFACA,wFACA,wFACA,wFACA,yFACA,8FACA,KACA,KAAK;AAAA,GAKP,QAAQ,SAAW,eACjB,cAAmB,KAAQ,iBACR,KAAQ,gBAEX,eAAe,QAAQ,SAAS,QAGhD,GAAG,UAAU,QAAQ,QAAQ,KAAM,UAAW,WAC9C,SAGF,QAAQ,SAAS,OAAS,CACxB,yBACA,oBACA,qBACA,6BAEA,yCACA,uCACA,IAEA,oBACA,4BACA,oCACA,6CACA,KACA,KAAK;AAAA,IAGT,SAAQ,OAAS,mBC7lBjB,oCACA,QAAoB,uCACK,uCAGV,eACC,KAKhB,iCACE,WACA,GAAI,gBAAoB,YACtB,OAAS,AAAG,UAAM,YAElB,kBAAsB,MAAM,cAAgB,MAAM,YAAc,MAAM,OAAU,MAAM,OAAU,MAAM,MAAM,GAAK,iBAC1F,MAAM,eAAiB,MAAM,aAAe,MAAM,QAAW,MAAM,OAAU,MAAM,MAAM,GAAK,cACnG,2BACC,eAKnB,GAJA,AAAI,QAAO,OAAO,MAAQ,EAAG,YAAc,QAAO,OAAO,MACpD,AAAI,QAAO,OAAO,OAAS,GAAG,aAAc,cAAiB,SAAO,OAAO,OAAS,iBACzF,AAAI,QAAO,OAAO,OAAS,EAAG,aAAe,QAAO,OAAO,OACtD,AAAI,QAAO,OAAO,MAAQ,GAAG,cAAe,eAAkB,SAAO,OAAO,MAAQ,gBACrF,CAAC,aAAe,CAAC,aACnB,WAAI,uBAAwB,OACrB,KAET,AAAI,EAAC,UAAa,SAAS,QAAU,aAAiB,SAAS,SAAW,eACxE,UAAY,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,YAAa,cAAgB,SAAS,cAAc,UAC9H,AAAI,SAAS,QAAU,aAAa,UAAS,MAAQ,aACrD,AAAI,SAAS,SAAW,cAAc,UAAS,OAAS,eAE1D,QAAY,SAAS,WAAW,MAGhC,GAFA,AAAI,gBAAiB,WAAW,IAAI,aAAa,MAAO,EAAG,GACtD,IAAI,UAAU,MAAO,EAAG,EAAG,cAAe,eAAgB,EAAG,EAAG,SAAS,MAAO,SAAS,QAC1F,QAAO,OAAO,SAChB,AAAI,EAAC,KAAK,IAAM,CAAC,WAAc,SAAS,QAAU,UAAU,OAAW,SAAS,SAAW,UAAU,SACnG,WAAa,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,SAAS,MAAO,SAAS,QAAU,SAAS,cAAc,UACrI,AAAI,UAAU,QAAU,SAAS,OAAO,WAAU,MAAQ,SAAS,OACnE,AAAI,UAAU,SAAW,SAAS,QAAQ,WAAU,OAAS,SAAS,QACtE,KAAK,GAAK,AAAG,QAAI,MAAM,WAAa,GAAY,gBAAO,CAAE,OAAQ,YAAe,MAElF,KAAK,GAAG,QACR,KAAK,GAAG,UAAU,aAAc,QAAO,OAAO,YAC9C,AAAI,QAAO,OAAO,WAAa,GAAG,KAAK,GAAG,UAAU,WAAY,QAAO,OAAO,UAC9E,AAAI,QAAO,OAAO,YAAc,GAAG,KAAK,GAAG,UAAU,UAAW,QAAO,OAAO,WAC9E,AAAI,QAAO,OAAO,OAAS,GAAG,KAAK,GAAG,UAAU,OAAQ,QAAO,OAAO,MACtE,AAAI,QAAO,OAAO,aAAe,GAAG,KAAK,GAAG,UAAU,aAAc,QAAO,OAAO,YAClF,AAAI,QAAO,OAAO,MAAQ,GAAG,KAAK,GAAG,UAAU,MAAO,QAAO,OAAO,KACpE,AAAI,QAAO,OAAO,UAAU,KAAK,GAAG,UAAU,YAC9C,AAAI,QAAO,OAAO,OAAO,KAAK,GAAG,UAAU,SAC3C,AAAI,QAAO,OAAO,SAAS,KAAK,GAAG,UAAU,WAC7C,AAAI,QAAO,OAAO,OAAO,KAAK,GAAG,UAAU,SAC3C,AAAI,QAAO,OAAO,YAAY,KAAK,GAAG,UAAU,cAChD,AAAI,QAAO,OAAO,aAAa,KAAK,GAAG,UAAU,eACjD,AAAI,QAAO,OAAO,UAAU,KAAK,GAAG,UAAU,YAC9C,AAAI,QAAO,OAAO,WAAa,GAAG,KAAK,GAAG,UAAU,WAAY,QAAO,OAAO,UAC9E,KAAK,GAAG,MAAM,UAGd,OAAW,GACX,GAAI,IACF,aAAiB,GAAI,YAAW,UAAU,MAAQ,UAAU,OAAS,aACnD,GAAI,YAAW,UAAU,MAAQ,UAAU,OAAS,GACtE,GAAG,WAAW,EAAG,EAAG,UAAU,MAAO,UAAU,OAAQ,GAAG,KAAM,GAAG,cAAe,UAGlF,MAAQ,EACR,UAAa,UAAU,OAAS,EAAG,GAAK,EAAG,IACzC,UAAa,EAAG,EAAI,UAAU,MAAO,KACnC,UAAe,GAAI,EAAI,UAAU,OAAS,EAC1C,UAAU,KAAO,SAAS,MAAQ,GAClC,UAAU,KAAO,SAAS,MAAQ,GAClC,UAAU,KAAO,SAAS,MAAQ,GAGtC,UAAU,KAAO,eAGnB,WAAY,SAEd,WACA,GAAI,UAAU,MACZ,UAAc,CAAC,UAAU,OAAQ,UAAU,MAAO,GAClD,OAAS,AAAG,aAAS,UAAU,KAAM,MAAO,iBAClC,QAAO,UAAY,SAAa,oBAAqB,WAE/D,OAAS,AAAG,YAAQ,WAAW,gBAG/B,eAAoB,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,YAAa,cAAgB,SAAS,cAAc,UACtI,WAAW,MAAQ,YACnB,WAAW,OAAS,aACpB,YAAgB,WAAW,WAAW,MACtC,QAAQ,UAAU,UAAW,EAAG,GAChC,UAAa,QAAQ,aAAa,EAAG,EAAG,YAAa,cACrD,OAAS,AAAG,YAAQ,WAAW,OAEjC,WAAe,OAAO,UACtB,OAAS,OAAO,WAAW,GAC3B,OAAO,UACP,OAAO,UAET,MAAO,CAAE,OAAQ,OAAQ,QAAO,OAAO,OAAS,UAAY,MAG9D,SAAQ,QAAU,WC3GlB,sCCCO,gBAAgB,KACrB,OAAW,GAAI,SACJ,GAAG,GAAG,WAAW,WAAW,SAAS,EAAG,QAAQ,GAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,GAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,GAAG,kBAAkB,WAAW,SAAS,EAAG,OAErM,AAAI,KAAK,QAAQ,IAAI,GAAI,SAAU,GAAG,KDJxC,IAAA,IAAoB,+BEDpB,GAAoB,sCAEE,CACpB,KAAM,UACN,SAAU,GACV,OAAQ,KACR,MAAO,KACP,OAAQ,KACR,UAAW,CACT,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,GAC9B,eAAgB,KAIb,oBACL,GAAI,CAAC,AAAG,eAAY,OAAO,OACzB,OAAO,OAAU,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,OAAO,MAAO,OAAO,QAAU,SAAS,cAAc,UACrI,OAAW,OAAO,OAAO,WAAW,SAAU,OAAO,WACrD,AAAG,mBAAgB,EAAG,IACtB,QAAY,GAAO,iBAAa,IAChC,AAAG,mBAAgB,OAAO,KAAM,IAAM,GAAO,qBAAiB,KAAM,OAAO,UAC3E,YAAgB,AAAG,wBAAqB,SACxC,QAAQ,QAAQ,eACd,oBAAwB,IAAK,aAAc,YAAa,OAAO,MAC/D,AAAG,kBAAe,mBAEpB,AAAG,OAAI,IAAI,gBAAiB,GAC5B,AAAG,OAAI,IAAI,yBAA0B,GAAG,aAAa,GAAG,mBACxD,AAAG,OAAI,IAAI,2BAA4B,IACvC,AAAG,OAAI,IAAI,2BAA4B,KFhC3C,IAAA,SAA0B,mCACL,iCACG,qCACC,wCACE,wCACF,8BGQzB,IAAoB,+BAhBpB,AAkBA,yBACE,MAAO,CACL,KAAK,IAAI,IAAI,SAAS,GAAK,IAAI,WAAW,IAC1C,KAAK,IAAI,IAAI,SAAS,GAAK,IAAI,WAAW,KAG9C,2BACE,MAAO,CACL,IAAI,WAAW,GAAM,KAAI,SAAS,GAAK,IAAI,WAAW,IAAM,EAC5D,IAAI,WAAW,GAAM,KAAI,SAAS,GAAK,IAAI,WAAW,IAAM,GAGhE,uDACE,MAAU,OAAM,MAAM,KACZ,OAAM,MAAM,SACR,CAAC,CACb,IAAI,WAAW,GAAK,EACpB,IAAI,WAAW,GAAK,EACpB,IAAI,SAAS,GAAK,EAClB,IAAI,SAAS,GAAK,IAEpB,MAAO,AAAG,WAAM,cAAc,OAAO,MAAO,CAAC,GAAI,UAEnD,yCACE,eAAmB,CAAC,IAAI,WAAW,GAAK,OAAO,GAAI,IAAI,WAAW,GAAK,OAAO,aAC7D,CAAC,IAAI,SAAS,GAAK,OAAO,GAAI,IAAI,SAAS,GAAK,OAAO,kBAClD,IAAI,cAAc,IAAI,QAC1C,gBAAoB,CAAC,MAAM,GAAK,OAAO,GAAI,MAAM,GAAK,OAAO,IAC7D,MAAO,eAET,MAAO,CAAE,WAAY,SAAU,cAAe,WAAY,IAAI,YAEhE,+BAAkC,KAChC,WAAe,aAAa,UACf,WAAW,iBACJ,CAAC,OAAS,KAAK,GAAK,EAAG,OAAS,KAAK,GAAK,cAC3C,CAAC,OAAO,GAAK,YAAY,GAAI,OAAO,GAAK,YAAY,aACvD,CAAC,OAAO,GAAK,YAAY,GAAI,OAAO,GAAK,YAAY,IACtE,MAAO,CAAE,WAAY,SAAU,cAAe,IAAI,eAEpD,0BACE,YAAgB,aAAa,UAChB,WAAW,aACR,KAAK,IAAI,GAAG,eACX,QAAU,aACR,CAAC,QAAQ,GAAK,SAAU,QAAQ,GAAK,mBACvC,CAAC,QAAQ,GAAK,SAAU,QAAQ,GAAK,UACtD,MAAO,CAAE,WAAY,SAAU,cAAe,IAAI,eCjEpD,AAgBA,0BAA0B,OACxB,MAAO,OAAQ,EAAI,KAAK,GAAK,KAAK,MAAO,OAAQ,KAAK,IAAO,GAAI,KAAK,KAExE,wCACE,YAAgB,KAAK,GAAK,EAAI,KAAK,MAAM,CAAE,QAAO,GAAK,OAAO,IAAK,OAAO,GAAK,OAAO,IACtF,MAAO,kBAAiB,SAE1B,2BAA+B,OAAU,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IACvE,oBACE,YAAc,EACd,UAAa,EAAG,EAAI,GAAG,OAAQ,IAC7B,SAAW,GAAG,GAAK,GAAG,GAExB,MAAO,SAET,6CACE,WAAe,GACf,UAAa,EAAG,EAAI,IAAI,OAAQ,IAC9B,OAAO,KAAK,IAAI,GAAG,cAErB,MAAO,QAET,8CACE,YAAgB,QACH,KAAK,OAClB,YAAe,EAAG,IAAM,KAAM,OAC5B,QAAQ,KAAK,IACb,YAAe,EAAG,IAAM,KAAM,MAC5B,QAAQ,KAAK,KAAK,IAAI,KAAK,KAAM,mBAAmB,KAAM,OAG9D,MAAO,SAET,8CACE,SAAa,KAAK,IAAI,eACT,KAAK,IAAI,yBACC,CAAC,CAAC,KAAM,CAAC,KAAM,GAAI,CAAC,KAAM,KAAM,GAAI,CAAC,EAAG,EAAG,sBACxC,uBAAuB,OAAO,GAAI,OAAO,6BAClC,0BAA0B,kBAAmB,0CAC5C,uBAAuB,CAAC,OAAO,GAAI,CAAC,OAAO,IAC7E,MAAO,2BAA0B,yBAA0B,2BAE7D,uCACE,sBAA0B,CAAC,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,IAAK,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,0BACrD,CAAC,OAAO,GAAG,GAAI,OAAO,GAAG,wBAC1B,CAC1B,CAAC,IAAI,kBAAkB,GAAI,sBAC3B,CAAC,IAAI,kBAAkB,GAAI,uBAE7B,MAAO,CACL,kBAAkB,GAAG,OAAO,oBAAoB,IAChD,kBAAkB,GAAG,OAAO,oBAAoB,IAChD,CAAC,EAAG,EAAG,IAGX,2DACE,MAAO,CACL,IAAI,sBAAuB,eAAe,IAC1C,IAAI,sBAAuB,eAAe,KJjE9C,IAAA,SAA0B,uCACD,qCACF,oCACE,8BKZzB,wEAGA,IAAO,eAAQ,CACb,QAAS,QACT,SAAU,aAEV,MAAO,GAIP,QAAS,GAIT,WAAY,GAKZ,OAAQ,GAIR,eAAgB,GAIhB,OAAQ,OAGR,OAAQ,CACN,QAAS,GACT,MAAO,EACP,OAAQ,EAIR,OAAQ,GACR,WAAY,EACZ,SAAU,EACV,UAAW,EACX,KAAM,EACN,WAAY,EACZ,IAAK,EACL,SAAU,GACV,MAAO,GACP,QAAS,GACT,WAAY,GACZ,YAAa,GACb,SAAU,GACV,SAAU,GAGZ,QAAS,CACP,QAAS,IAGX,KAAM,CACJ,QAAS,GAIT,SAAU,CACR,UAAW,gCAIX,UAAW,IACX,SAAU,GAEV,SAAU,GAEV,WAAY,GAKZ,cAAe,GACf,aAAc,GAEd,eAAgB,IAKlB,KAAM,CACJ,QAAS,GACT,UAAW,0BACX,UAAW,IACX,cAAe,IAGjB,KAAM,CACJ,QAAS,GACT,UAAW,sBACX,UAAW,IAGb,IAAK,CACH,QAAS,GACT,UAAW,iCAEX,UAAW,GACX,WAAY,IAId,OAAQ,CACN,QAAS,GACT,cAAe,GACf,UAAW,oCACX,UAAW,GACX,WAAY,IAId,QAAS,CACP,QAAS,GACT,UAAW,GACX,cAAe,GACf,WAAY,GACZ,UAAW,gCAGb,UAAW,CACT,QAAS,GACT,UAAW,IACX,UAAW,iCAIf,KAAM,CACJ,QAAS,GACT,UAAW,yBACX,UAAW,IACX,cAAe,GAEf,eAAgB,GAEhB,UAAW,GACX,aAAc,GAEd,UAAW,aAGb,KAAM,CACJ,QAAS,GACT,SAAU,GAEV,UAAW,IACX,WAAY,GAKZ,cAAe,GACf,aAAc,GAEd,eAAgB,GAEhB,SAAU,EAEV,UAAW,GACX,SAAU,CACR,UAAW,6BAEb,SAAU,CACR,UAAW,iCCvKJ,KAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uEA0JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;2BNzId,IAAM,IACN,MA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", "names": [] } diff --git a/dist/human.node.json b/dist/human.node.json index 28fede0c..eb698d75 100644 --- a/dist/human.node.json +++ b/dist/human.node.json @@ -44,7 +44,7 @@ "imports": [] }, "src/face/facepipeline.js": { - "bytes": 13836, + "bytes": 14062, "imports": [ { "path": "dist/tfjs.esm.js" @@ -64,7 +64,7 @@ ] }, "src/face/facemesh.js": { - "bytes": 2816, + "bytes": 3054, "imports": [ { "path": "src/log.js" @@ -350,7 +350,7 @@ ] }, "config.js": { - "bytes": 9530, + "bytes": 9644, "imports": [] }, "src/sample.js": { @@ -362,7 +362,7 @@ "imports": [] }, "src/human.js": { - "bytes": 16644, + "bytes": 16727, "imports": [ { "path": "src/log.js" @@ -419,7 +419,7 @@ "dist/human.node-gpu.js.map": { "imports": [], "inputs": {}, - "bytes": 779986 + "bytes": 702698 }, "dist/human.node-gpu.js": { "imports": [], @@ -441,10 +441,10 @@ "bytesInOutput": 30828 }, "src/face/facepipeline.js": { - "bytesInOutput": 9379 + "bytesInOutput": 9563 }, "src/face/facemesh.js": { - "bytesInOutput": 2245 + "bytesInOutput": 2421 }, "src/profile.js": { "bytesInOutput": 846 @@ -516,7 +516,7 @@ "bytesInOutput": 4069 }, "src/human.js": { - "bytesInOutput": 11084 + "bytesInOutput": 11126 }, "src/log.js": { "bytesInOutput": 266 @@ -531,7 +531,7 @@ "bytesInOutput": 1790 }, "config.js": { - "bytesInOutput": 1492 + "bytesInOutput": 1509 }, "src/sample.js": { "bytesInOutput": 55295 @@ -540,7 +540,7 @@ "bytesInOutput": 20 } }, - "bytes": 309780 + "bytes": 310199 } } } diff --git a/dist/tfjs.esm.js b/dist/tfjs.esm.js index 6e789217..a12a4937 100644 --- a/dist/tfjs.esm.js +++ b/dist/tfjs.esm.js @@ -5,43 +5,43 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all5)=>{__markAsModule(target);for(var name in all5)__defProp(target,name,{get:all5[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS(()=>{}),require_alea=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS(()=>{}),require_seedrandom=__commonJS((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_alea2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS((exports3,module)=>{(function(pool6,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_path=__commonJS(()=>{}),require_worker_threads=__commonJS(()=>{}),require_perf_hooks=__commonJS(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer11&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer11=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&(typeof performance=="undefined"&&(performance=require_perf_hooks().performance));var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer12){GROWABLE_HEAP_I8().set(array2,buffer12)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer11=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer11=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer11.byteLength,updateGlobalBufferAndViews(buffer11),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack9=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack9=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer12){HEAP8.set(array2,buffer12)}var buffer11,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer11=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer12=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer12,0)),buffer12.length=0):buffer12.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=String(data);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS((exports3,module)=>{(function(global2,pool6,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool6)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool6),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_string_decoder=__commonJS(()=>{});var version="2.7.0";var version2="2.7.0";var version3="2.7.0";var version4="2.7.0";var version5="2.7.0";var EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min8,max10){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean7,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse12){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real8,imag8){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min8,x,max10){return Math.max(min8,Math.min(x,max10))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum29=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D";var kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config)}return result}function registerKernel(config){let{kernelName,backendName}=config,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config)}function registerGradient(config){let{kernelName}=config;gradRegistry.has(kernelName)&&(env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`)),gradRegistry.set(kernelName,config)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add33(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` +var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__markAsModule=target=>__defProp(target,"__esModule",{value:!0}),__commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all4)=>{__markAsModule(target);for(var name in all4)__defProp(target,name,{get:all4[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS(()=>{}),require_alea=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS(()=>{}),require_seedrandom=__commonJS((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_alea2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1282=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift72=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40962=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei2=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom3=__commonJS((exports3,module)=>{(function(pool5,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea2(),xor128=require_xor1282(),xorwow=require_xorwow2(),xorshift7=require_xorshift72(),xor4096=require_xor40962(),tychei=require_tychei2(),sr=require_seedrandom3();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_path=__commonJS(()=>{}),require_worker_threads=__commonJS(()=>{}),require_perf_hooks=__commonJS(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS((exports3,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer10&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer10=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&(typeof performance=="undefined"&&(performance=require_perf_hooks().performance));var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:165,maximum:165+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer11){GROWABLE_HEAP_I8().set(array2,buffer11)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer10=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer10=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer10.byteLength,updateGlobalBufferAndViews(buffer10),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;if(Module.asm=exports5,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=12976,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack8=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),context.initExtensionsDone)return;context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.V).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.W).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.X).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.fa).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ga).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ha).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ia).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ja).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.ka).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.la).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.ma).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.na).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.oa).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.pa).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.qa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.sa).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.ta).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.ua).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.va).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.wa).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.xa).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.ya).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.za).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Aa).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Ba).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ca).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Da).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ea).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Fa).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Ga).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ha).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Ia).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Ja).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Ka).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.La).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ma).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Na).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Oa).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Pa).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Qa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Ra).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Sa).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Ta).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.Ua).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.Va).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.Wa).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.Xa).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.Ya).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.Za).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm._a).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.$a).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.ab).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.bb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.cb).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.db).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.eb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.fb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.gb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.hb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.mb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.nb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ob).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.pb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.qb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.rb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.sb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.tb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.ub).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.vb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports3=="object"&&(exports3.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS((exports3,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:147,maximum:147+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack8=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer11){HEAP8.set(array2,buffer11)}var buffer10,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer10=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks3){for(;callbacks3.length>0;){var callback=callbacks3.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports5=instance.exports;Module.asm=exports5,wasmMemory=exports5.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports4=Module.instantiateWasm(info,receiveInstance);return exports4}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer11=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer11,0)),buffer11.length=0):buffer11.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Div=Module._Div=function(){return(_Div=Module._Div=Module.asm.Div).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Negate=Module._Negate=function(){return(_Negate=Module._Negate=Module.asm.Negate).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0)return;if(preRun(),runDependencies>0)return;function doRun(){if(calledRun)return;if(calledRun=!0,Module.calledRun=!0,ABORT)return;initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0)return;noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports3=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports3=="object"&&(exports3.WasmBackendModule=WasmBackendModule)}),require_alea3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state6=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=String(data);for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor1283=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift73=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.x&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor40963=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state6=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(state6.X&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei3=__commonJS((exports3,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state6&&(typeof state6=="object"&©(state6,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports3,typeof module=="object"&&module,typeof define=="function"&&define)}),require_seedrandom5=__commonJS((exports3,module)=>{(function(global2,pool5,math){var width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten5(options.entropy?[seed,tostring(pool5)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool5),(options.pass||callback||function(prng2,seed2,is_math_call,state6){return state6&&(state6.S&©(state6,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea3(),xor128=require_xor1283(),xorwow=require_xorwow3(),xorshift7=require_xorshift73(),xor4096=require_xor40963(),tychei=require_tychei3(),sr=require_seedrandom5();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr}),require_string_decoder=__commonJS(()=>{});var version="2.7.0";var version2="2.7.0";var version3="2.7.0";var version4="2.7.0";var version5="2.7.0";var EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend3,dataMover){this.backend=backend3,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min7,max9){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean6,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse11){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real7,imag7){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min7,x,max9){return Math.max(min7,Math.min(x,max9))}function nearestLargerEven(val){return val%2===0?val:val+1}function sum(arr){let sum28=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!==0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment15){ENV=environment15}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolBackprop="AvgPoolBackprop",AvgPool3D="AvgPool3D",AvgPool3DBackprop="AvgPool3DBackprop",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",Div="Div",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNBackprop="LRNBackprop",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolBackprop="MaxPoolBackprop",MaxPool3D="MaxPool3D",MaxPool3DBackprop="MaxPool3DBackprop",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multiply="Multiply",Negate="Negate",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",SelectV2="SelectV2",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D";var kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config]=value,[backend3]=key.split("_");backend3===backendName&&result.push(config)}return result}function registerKernel(config){let{kernelName,backendName}=config,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config)}function registerGradient(config){let{kernelName}=config;gradRegistry.has(kernelName)&&(env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`)),gradRegistry.set(kernelName,config)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){let kernels=getKernelsForBackend(registeredBackendName);kernels.forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}let kernelProfile={kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")};return kernelProfile}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape2,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape2.length-1;i>=0;i--){let node=tape2[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add32(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` `)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data}dataSync(){this.throwIfDisposed();let data=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data}async bytes(){this.throwIfDisposed();let data=await trackerFn().read(this.dataId);return this.dtype==="string"?data:new Uint8Array(data.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor168,tensorList){return tensorList.some(x=>x.id===tensor168.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor168=>this.keep(this.clone(tensor168)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor168.kept&&tensor168.scopeId===oldScope.id&&this.track(tensor168)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor168 of node.saved)tensor168.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real8,imag8){let $real=convertToTensor(real8,"real","complex"),$imag=convertToTensor(imag8,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor168=>tensor168.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer11){if(useNodeBuffer)return Buffer.from(buffer11).toString("base64");let buf=new Uint8Array(buffer11),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer11.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer11=>{temp.set(new Uint8Array(buffer11),offset),offset+=buffer11.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer11=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer11);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer11)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions);var DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME))?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}};var PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME))?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME))?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_});var browser_exports={};__export(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor168,indices){if(tensor168.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor168.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor168.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor168.rank}`);if(tensor168.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor168.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config){return new cls(config)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. +`;return lines[lines.length-1]=" "+lines[lines.length-1]+"]"+(isLast?"":newLineSep),lines}function createComplexTuples(vals){let complexTuples=[];for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data}dataSync(){this.throwIfDisposed();let data=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data}async bytes(){this.throwIfDisposed();let data=await trackerFn().read(this.dataId);return this.dtype==="string"?data:new Uint8Array(data.buffer)}dispose(){if(this.isDisposed)return;trackerFn().disposeTensor(this),this.isDisposedInternal=!0}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor167,tensorList){return tensorList.some(x=>x.id===tensor167.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container2,list,seen){if(container2==null)return;if(container2 instanceof Tensor){list.push(container2);return}if(!isIterable(container2))return;let iterable=container2;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){let kernels=getKernelsForBackend(backendName);kernels.forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend3=registryFactoryEntry.factory();if(backend3&&!(backend3 instanceof KernelBackend)&&typeof backend3.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend3.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3,kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(({dataId,shape,dtype})=>this.makeTensorFromDataId(dataId,shape,dtype));if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{let saveFunc=tensors=>{if(!isTapeOn)return;saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){let saved=tensors.map(tensor167=>this.keep(this.clone(tensor167)));return saved}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend3){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend3=backend3||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend3.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend3),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend3){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend3),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend3){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend3||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId),refCount=info.refCount;refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor167.kept&&tensor167.scopeId===oldScope.id&&this.track(tensor167)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor167 of node.saved)tensor167.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.readSync(dataId)}read(dataId){let info=this.state.tensorInfo.get(dataId);return info.backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment15=new Environment(ns);ns._tfengine=new Engine(environment15)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.add(a,b);return save([a,b]),res},inputs,null,Add)}var device_util_exports={};__export(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let skipTypedArray=!0,values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],skipTypedArray);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);let tensors=arg;return tensors.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName),parseAsDtype)}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real7,imag7){let $real=convertToTensor(real7,"real","complex"),$imag=convertToTensor(imag7,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let forward=backend3=>backend3.complex($real,$imag),inputs={real:$real,imag:$imag};return ENGINE.runKernelFunc(forward,inputs,null,Complex)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor4(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor167=>tensor167.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer10){if(useNodeBuffer)return Buffer.from(buffer10).toString("base64");let buf=new Uint8Array(buffer10),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer10.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer10=>{temp.set(new Uint8Array(buffer10),offset),offset+=buffer10.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)===0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer10=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer10);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer10)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[],routers=handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters;return routers.forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions);var DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),modelStore=modelTx.objectStore(MODEL_STORE_NAME),getRequest=modelStore.get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),putModelRequest=modelStore.put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME))?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),store=tx.objectStore(INFO_STORE_NAME),getAllInfoRequest=store.getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let modelStore=modelTx.objectStore(MODEL_STORE_NAME),deleteModelRequest=modelStore.delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}};var PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology21=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{return this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology21),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata})),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology21=JSON.parse(this.LS.getItem(this.keys.topology));if(topology21==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology21;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,out.userDefinedMetadata=metadata.userDefinedMetadata}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME))?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url),manager=ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);return manager.removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){let deleteSource=!1;return cloneModelInternal(sourceURL,destURL,deleteSource)}async function moveModel(sourceURL,destURL){let deleteSource=!0;return cloneModelInternal(sourceURL,destURL,deleteSource)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernelFunc(backend3=>backend3.cast($x,dtype),inputs,null,Cast,attrs)}var cast=op({cast_});function clone_(x){let $x=convertToTensor(x,"x","clone",null),forward=()=>ENGINE.makeTensorFromDataId($x.dataId,$x.shape,$x.dtype),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Identity)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest},modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1&&resolve({modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy,userDefinedMetadata:modelJSON.userDefinedMetadata})},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&(!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME))?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,responses=loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction),bufferPromises=responses.map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1,buffers=loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction);return buffers}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){let fetchWeights=fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}),loadWeights2=weightsLoaderFactory(fetchWeights);return loadWeights2(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. +Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,userDefinedMetadata:modelArtifacts.userDefinedMetadata,weightsManifest};init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;if(weightsManifest!=null){let results=await this.loadWeights(weightsManifest);[weightSpecs,weightData]=results}let artifacts={modelTopology,weightSpecs,weightData,userDefinedMetadata,generatedBy,convertedBy,format},initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){if(arguments.length===1){let isModelArtifacts=modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null;return isModelArtifacts?new PassthroughLoader(modelArtifacts):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts}))}else return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig})}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export(math_exports,{confusionMatrix:()=>confusionMatrix});function reshape_(x,shape){let $x=convertToTensor(x,"x","reshape",null),inputs={x:$x},attrs={shape},forward=(backend3,save)=>(shape=inferFromImplicitShape(shape,$x.size),assert($x.size===sizeFromShape(shape),()=>"new shape and old shape must have the same number of elements."),save([$x]),backend3.reshape($x,shape));return ENGINE.runKernelFunc(forward,inputs,null,Reshape,attrs)}var reshape=op({reshape_});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{save([$a,$b]);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;assert($a.rank>=2&&$b.rank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`),assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShapeOuterDims=batchDimA>batchDimB?outerDimsA:outerDimsB,outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),res3d=backend3.batchMatMul(a3D,b3D,transposeA,transposeB);return reshape(res3d,outShape)},inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernelFunc(forward,inputs,null,BatchMatMul,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let $indices=convertToTensor(indices,"indices","oneHot","int32"),outShape=[...$indices.shape,depth],forward=(backend3,save)=>(save([$indices]),reshape(backend3.oneHot(reshape($indices,[$indices.size]),depth,onValue,offValue),outShape)),inputs={indices:$indices},attrs={depth,onValue,offValue};return ENGINE.runKernelFunc(forward,inputs,null,OneHot,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernelFunc(backend3=>backend3.transpose($x,perm),inputs,null,Transpose,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_});var browser_exports={};__export(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}let kernel=getKernel(FromPixels,ENGINE.backendName);if(kernel!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor167,indices){if(tensor167.rank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensor167.rank}.`);if(indices.rank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indices.rank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indices.rank-1]>tensor167.rank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indices.rank-1]} vs. ${tensor167.rank}`);if(tensor167.size===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor167.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}var serialization_exports={};__export(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config){return new cls(config)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. Actual: ${actualFlat}. Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp13=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp13,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor168=>tensor168.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad11,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad11,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad11,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad11,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad11,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad11,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad11,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad11==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad11=="object"){let top=dataFormat==="channelsLast"?pad11[1][0]:pad11[2][0],bottom=dataFormat==="channelsLast"?pad11[1][1]:pad11[2][1],left=dataFormat==="channelsLast"?pad11[2][0]:pad11[3][0],right=dataFormat==="channelsLast"?pad11[2][1]:pad11[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad11,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad11=="number"){let padType=pad11===0?"VALID":"NUMBER";padInfo={top:pad11,bottom:pad11,left:pad11,right:pad11,front:pad11,back:pad11,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad11,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad11==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad11==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad11}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor168=>{if(tensor168.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor168.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean7,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean7,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean7,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad11,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad11,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad11,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad11,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad11,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad11),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad11){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad11);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad11,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad11){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad11)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse12=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse12);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse12};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${expectedFlat}.`)}}function expectPromiseToFail(fn,done){fn().then(()=>done.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp12=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp12,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}var version6="2.7.0";function enableProdMode(){env().set("PROD",!0)}function enableDebugMode(){env().set("DEBUG",!0)}function disableDeprecationWarnings(){env().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function deprecationWarn(msg){env().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(msg+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}setDeprecationWarningFn(deprecationWarn);function disposeVariables(){ENGINE.disposeVariables()}function engine15(){return ENGINE}function memory(){return ENGINE.memory()}function profile(f){return ENGINE.profile(f)}function tidy(nameOrFn,fn){return ENGINE.tidy(nameOrFn,fn)}function dispose(container2){let tensors=getTensorsInContainer(container2);tensors.forEach(tensor167=>tensor167.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend2(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.add($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Add)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.floorDiv($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,FloorDiv)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let forward=(backend3,save)=>{let res=backend3.realDivide($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,Div,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.multiply($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Multiply)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),$x.dtype==="complex64"?backend3.complexAbs($x):backend3.abs($x)),inputs,null,Abs)}var abs=op({abs_});function acos_(x){let $x=convertToTensor(x,"x","acos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acos($x);return save([$x]),res},inputs,null,Acos)}var acos=op({acos_});function acosh_(x){let $x=convertToTensor(x,"x","acosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.acosh($x);return save([$x]),res},inputs,null,Acosh)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let forward=(backend3,save)=>{let res=backend3.addN($tensors);return save($tensors),res},inputs=$tensors;return ENGINE.runKernelFunc(forward,inputs,null,AddN)}var addN=op({addN_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.all($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,All,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","any","bool"),forward=backend3=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank);permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let res=backend3.any($x,axes);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,origAxes);return reshape(res,newShape)}return res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Any,attrs)}var any=op({any_});function argMax_(x,axis=0){let $x=convertToTensor(x,"x","argMax"),forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMax($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMax,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let $x=convertToTensor(x,"x","argMin"),forward=(backend3,save)=>{save([$x]),axis==null&&(axis=0);let axes=parseAxisParam(axis,$x.shape),permutedAxes=getAxesPermutation(axes,$x.rank);return permutedAxes!=null&&($x=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank)),backend3.argMin($x,axes[0])},inputs={x:$x},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,ArgMin,attrs)}var argMin=op({argMin_});function asin_(x){let $x=convertToTensor(x,"x","asin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asin($x);return save([$x]),res},inputs,null,Asin)}var asin=op({asin_});function asinh_(x){let $x=convertToTensor(x,"x","asinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.asinh($x);return save([$x]),res},inputs,null,Asinh)}var asinh=op({asinh_});function atan_(x){let $x=convertToTensor(x,"x","atan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atan($x);return save([$x]),res},inputs,null,Atan)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.atan2($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Atan2)}var atan2=op({atan2_});function atanh_(x){let $x=convertToTensor(x,"x","atanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.atanh($x);return save([$x]),res},inputs,null,Atanh)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad10,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad10,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad10,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad10,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad10,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=conditionalRound((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputDepths),()=>`The output # of depths (${outputDepths}) must be an integer. Change the stride and/or zero pad parameters`);let outputRows=conditionalRound((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode);assert(isInt(outputRows),()=>`The output # of rows (${outputRows}) must be an integer. Change the stride and/or zero pad parameters`);let outputCols=conditionalRound((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return assert(isInt(outputCols),()=>`The output # of columns (${outputCols}) must be an integer. Change the stride and/or zero pad parameters`),[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad10,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,type:padType};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad10,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad10==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad10=="object"){let top=dataFormat==="channelsLast"?pad10[1][0]:pad10[2][0],bottom=dataFormat==="channelsLast"?pad10[1][1]:pad10[2][1],left=dataFormat==="channelsLast"?pad10[2][0]:pad10[3][0],right=dataFormat==="channelsLast"?pad10[2][1]:pad10[3][1],padType=top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT";padInfo={top,bottom,left,right,type:padType},outHeight=conditionalRound((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=conditionalRound((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad10,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad10=="number"){let padType=pad10===0?"VALID":"NUMBER";padInfo={top:pad10,bottom:pad10,left:pad10,right:pad10,front:pad10,back:pad10,type:padType};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad10,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad10==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad10==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad10}`);return{padInfo,outDepth,outHeight,outWidth}}function conditionalRound(value,roundingMode){if(!roundingMode)return value;switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function avgPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode);return save([x4D]),convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?x4D.clone():backend3.avgPool(x4D,convInfo)},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat);return save([x5D]),backend3.avgPool3d(x5D,convInfo)},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3D,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat");$tensors[0].dtype==="complex64"&&$tensors.forEach(tensor167=>{if(tensor167.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${tensor167.dtype}. `)});let forward=(backend3,save)=>{let $axis=parseAxisParam(axis,$tensors[0].shape)[0],outShape=computeOutShape2($tensors.map(t=>t.shape),$axis);if(sizeFromShape(outShape)===0)return tensor4([],outShape);if($tensors=$tensors.filter(t=>t.size>0),$tensors.length===1)return $tensors[0];let shapes=$tensors.map(t=>t.shape);assertParamsConsistent(shapes,$axis);let res=backend3.concat($tensors,$axis);return save($tensors),res},inputs=$tensors,attr={axis};return ENGINE.runKernelFunc(forward,inputs,null,Concat,attr)}var concat=op({concat_});function sigmoid_(x){let $x=convertToTensor(x,"x","sigmoid"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sigmoid($x);return save([res]),res},inputs,null,Sigmoid)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice");if($x.rank===0)throw new Error("Slicing scalar is not possible");let forward=(backend3,save)=>{let[begin_,size_]=parseSliceParams($x,begin,size);return assertParamsValid($x,begin_,size_),save([$x]),backend3.slice($x,begin_,size_)},inputs={x:$x},attrs={begin,size};return ENGINE.runKernelFunc(forward,inputs,null,Slice,attrs)}var slice=op({slice_});function tanh_(x){let $x=convertToTensor(x,"x","tanh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.tanh($x);return save([y]),y},inputs,null,Tanh)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod4=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod4===0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod4}`);let forward=backend3=>backend3.batchToSpaceND($x,blockShape,crops),inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernelFunc(forward,inputs,null,BatchToSpaceND,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean6,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let x4D=xAs4D($x),forward=(backend3,save)=>(save([x4D,$mean,$variance,$scale]),backend3.batchNorm(x4D,as1DOr4D($mean),as1DOr4D($variance),as1DOr4D($offset),as1DOr4D($scale),varianceEpsilon)),inputs={x:x4D,scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernelFunc(forward,inputs,null,FusedBatchNorm,attrs);return reshape(res,$x.shape)}function as1DOr4D(x){return x==null?null:x.rank===0?reshape(x,[x.size]):x.rank===1?x:x.rank===2?reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean6,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean6,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!==0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);let axes=reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0);if(axes.length===0)return clone(input2);let forward=backend3=>backend3.tile(input2,reps),inputs={x:input2},attrs={shape,inputShape};return ENGINE.runKernelFunc(forward,inputs,null,BroadcastTo,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let $x=convertToTensor(x,"x","ceil"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.ceil($x),inputs,null,Ceil)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.clip($x,clipValueMin,clipValueMax);return save([$x]),res},inputs,null,ClipByValue,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let forward=(backend3,save)=>{let $dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2d(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2D,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad10,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),strides=[1,stride],dilations=[1,dilation],conv2dDataFormat="NHWC",res=conv2d(input4D,filter4D,strides,pad10,conv2dDataFormat,dilations,dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad10,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(xShape4D,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),res2=backend3.conv2dDerInput(dy4D,filter,convInfo);return save([dy4D,filter]),res2},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad10,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad10,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let forward=(backend3,save)=>{let convInfo=computeConv3DInfo(x5D.shape,$filter.shape,strides,dilations,pad10),res2=backend3.conv3d(x5D,$filter,convInfo);return save([x5D,$filter]),res2},inputs={x:x5D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad10){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(xShape5D,filter.shape,strides,dilations,pad10);return backend3.conv3dDerInput(dy5D,filter,convInfo)},inputs={dy:dy5D,filter},attrs={pad:pad10,strides,inputShape:xShape5D},res=ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropInputV2,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad10){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad10)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let $x=convertToTensor(x,"x","cos"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cos($x);return save([$x]),res},inputs,null,Cos)}var cos=op({cos_});function cosh_(x){let $x=convertToTensor(x,"x","cosh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.cosh($x);return save([$x]),res},inputs,null,Cosh)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse11=!1){let $x=convertToTensor(x,"x","cumsum"),forward=(backend3,save)=>{let permutation=getAxesPermutation([axis],$x.rank),permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation));let permutedAxis=getInnerMostAxes(1,$x.rank)[0],value=backend3.cumsum(permutedX,permutedAxis,exclusive,reverse11);if(save([$x]),permutation!=null){let reversePermutation=getUndoAxesPermutation(permutation);value=transpose(value,reversePermutation)}return value},inputs={x:$x},attrs={axis,exclusive,reverse:reverse11};return ENGINE.runKernelFunc(forward,inputs,null,Cumsum,attrs)}var cumsum=op({cumsum_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputHeight} and ${blockSize} for depthToSpace with input shape ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad11,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad11,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros10=zerosLike(divResult),bEqualsZero=equal($b,zeros10);return where(bEqualsZero,zeros10,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_});var segment_util_exports={};__export(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable3=>!variable3.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable3=>variable3.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad11,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad11,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad11,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad11,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad11,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad11,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real8=zeros(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real8=ones2(shape,"float32"),imag8=zeros(shape,"float32");return complex(real8,imag8)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data,c,h){let $data=convertToTensor(data,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad11,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad11===0&&(pad11="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad11),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad11==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad11:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp13){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp13,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul64=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul64,resultY=this.mean+this.stdDev*v2*mul64,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min8,this.range=max10-min8,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min8} - ${max10} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step9)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad11,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad11,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean7=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean7,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step9!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step9,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad11,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad11,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad11,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad11,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad11,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad11,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad11,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad11,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad11,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad11,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad11,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_});var Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_});var spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy};var Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.rho,config.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config){return new cls(config.learningRate,config.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon,config.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config){return new cls(config.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config){return new cls(config.learningRate,config.momentum,config.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config){return new cls(config.learningRate,config.decay,config.momentum,config.epsilon,config.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}};MomentumOptimizer,SGDOptimizer,AdadeltaOptimizer,AdagradOptimizer,RMSPropOptimizer,AdamaxOptimizer,AdamOptimizer;var train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam};var delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log6,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod5,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod5),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split5,tile:()=>tile4,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split5(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile4(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}};var acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}};var acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}};var addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}};var addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}};var argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}};var asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}};var atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}};var atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}};var atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_});var avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad11){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad11);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad11},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_});var avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad11)}}};var batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}};var batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}};var broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}};var castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})};var ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})};var clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}};var concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}};var conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad11,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad11,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad11,dataFormat)}}};var conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad11,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad11,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad11,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad11){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad11);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad11,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_});var conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad11),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad11)}}};var cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}};var coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}};var cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse12}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse12);return permutation!=null&&(out=transpose(out,permutation)),out}}}};var depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad11,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad11,dilations,dimRoundingMode)}}};var dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}};var divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}};var eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}};var erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}};var expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}};var expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}};var floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})};var floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}};var fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean7,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean7.shape,x.shape),tileShape=[];if(mean7.rank===1){for(let i=0;imean7.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean7.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean7.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean7.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean7.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean7.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean7.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean7.shape)},derOffset=()=>{let offsetDer=dy;return mean7.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean7.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}};var gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}};var identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})};var isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})};var log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}};var logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}};var logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_});var lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}};var maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad11,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad11,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_});var maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad11,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad11,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad11),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad11}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad11,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad11,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_});var maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad11}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad11)}}};var minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}};var minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}};var mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}};var multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}};var negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})};var oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}};var onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})};var padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp13=b,outShape=assertAndGetBroadcastShape(base2.shape,exp13.shape),derBase=()=>{let expFloat=cast(exp13,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp13.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp13.shape)};return{a:derBase,b:derExp}}};var preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}};var reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}};var relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}};var reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}};var reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}};var resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}};var resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}};var reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}};var roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})};var rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}};var selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}};var seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}};var sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}};var signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})};var sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}};var sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}};var sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}};var softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}};var softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}};var spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}};var splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}};var sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}};var squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}};var squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}};var stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})};var subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}};var sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}};var tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}};var tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}};var tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}};var unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}};var unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})};var gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean7,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean7,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min8,max10){return this.throwIfDisposed(),clipByValue(this,min8,max10)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad11,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad11,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad11,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse12){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse12)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad11,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad11,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad11,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad11,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad11,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad11,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp13){return this.throwIfDisposed(),powStrict(this,exp13)};Tensor.prototype.pow=function(exp13){return this.throwIfDisposed(),pow(this,exp13)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad11,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule(require_seedrandom4());function assertNotComplex(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)===0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let forward=backend3=>backend3.depthToSpace($x,blockSize,dataFormat),inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernelFunc(forward,inputs,null,DepthToSpace,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),res2=backend3.depthwiseConv2D(x4D,$filter,convInfo);return save([x4D,$filter]),res2},inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNative,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let $x=convertToTensor(x,"x","diag"),forward=backend3=>{let flat=reshape($x,[$x.size]),result=backend3.diag(flat),outShape=[...x.shape,...x.shape];return reshape(result,outShape)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Diag)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad10,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad10,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;ibackend3.equal($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Equal)}var equal=op({equal_});function where_(condition,a,b){let $a=convertToTensor(a,"a","where"),$b=convertToTensor(b,"b","where"),$condition=convertToTensor(condition,"condition","where","bool"),broadcastShape=assertAndGetBroadcastShape($a.shape,$b.shape),$broadcastedA=broadcastTo($a,broadcastShape),$broadcastedB=broadcastTo($b,broadcastShape);$condition.rank===1&&assert($condition.shape[0]===$a.shape[0],()=>"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let forward=(backend3,save)=>{let res=backend3.select($condition,$broadcastedA,$broadcastedB);return save([$condition]),res},inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernelFunc(forward,inputs,null,SelectV2)}var where=op({where_});function zerosLike_(x){let $x=convertToTensor(x,"x","zerosLike"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.zerosLike($x),inputs,null,ZerosLike)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros9=zerosLike(divResult),bEqualsZero=equal($b,zeros9);return where(bEqualsZero,zeros9,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul($t1,t22D);return t1t2}}var dot=op({dot_});function elu_(x){let $x=convertToTensor(x,"x","elu"),forward=(backend3,save)=>{let y=backend3.elu($x);return save([y]),y},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Elu)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.erf($x);return save([$x]),res},inputs,null,Erf)}var erf=op({erf_});function exp_(x){let $x=convertToTensor(x,"x","exp"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.exp($x);return save([res]),res},inputs,null,Exp)}var exp=op({exp_});function expandDims_(x,axis=0){let parseAs=null,$x=convertToTensor(x,"x","expandDims",parseAs);assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let newShape=$x.shape.slice();return axis<0&&(assert(-($x.rank+1)<=axis,()=>`Axis must be in the interval [${-($x.rank+1)}, ${$x.rank}]`),axis=$x.rank+axis+1),newShape.splice(axis,0,1),reshape($x,newShape)}var expandDims=op({expandDims_});function expm1_(x){let $x=convertToTensor(x,"x","expm1"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.expm1($x);return save([$x]),res},inputs,null,Expm1)}var expm1=op({expm1_});function tile_(x,reps){let parseAs=null,$x=convertToTensor(x,"x","tile",parseAs);assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let forward=(backend3,save)=>{let res=backend3.tile($x,reps);return save([$x]),res},inputsToSave=[$x],inputs={x:$x},attrs={reps};return ENGINE.runKernelFunc(forward,inputs,null,Tile,attrs,inputsToSave)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;ibackend3.fill(shape,value,dtype),{},null,Fill,attrs)}function floor_(x){let $x=convertToTensor(x,"x","floor"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.floor($x),inputs,null,Floor)}var floor=op({floor_}),segment_util_exports={};__export(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});var PARALLELIZE_THRESHOLD=30;function computeOptimalWindowSize(inSize){return inSize<=PARALLELIZE_THRESHOLD?inSize:nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)))}function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dim{let parsedAxis=parseAxisParam(axis,$x.shape)[0],shapeInfo=collectGatherOpShapeInfo($x,$indices,parsedAxis),res=backend3.gather($x,reshape($indices,[$indices.size]),parsedAxis);return save([$x,$indices]),reshape(res,shapeInfo.outputShape)};return ENGINE.runKernelFunc(forward,inputs,null,GatherV2,attrs)}var gather=op({gather_});function greater_(a,b){let $a=convertToTensor(a,"a","greater"),$b=convertToTensor(b,"b","greater");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.greater($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Greater)}var greater=op({greater_});function greaterEqual_(a,b){let $a=convertToTensor(a,"a","greaterEqual"),$b=convertToTensor(b,"b","greaterEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.greaterEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,GreaterEqual)}var greaterEqual=op({greaterEqual_});function imag_(input2){let $input=convertToTensor(input2,"input","imag"),forward=backend3=>backend3.imag($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Imag)}var imag=op({imag_});function isFinite_(x){let $x=convertToTensor(x,"x","isFinite"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isFinite($x),inputs,null,IsFinite)}var isFinite2=op({isFinite_});function isInf_(x){let $x=convertToTensor(x,"x","isInf"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isInf($x),inputs,null,IsInf)}var isInf=op({isInf_});function isNaN_(x){let $x=convertToTensor(x,"x","isNaN"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.isNaN($x),inputs,null,IsNan)}var isNaN2=op({isNaN_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.maximum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Maximum)}var maximum=op({maximum_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");let shape=[],inferredShape=[];return makeTensor(value,shape,inferredShape,dtype)}function leakyRelu_(x,alpha=.2){let $x=convertToTensor(x,"x","leakyRelu");return maximum(mul(scalar(alpha),$x),$x)}var leakyRelu=op({leakyRelu_});function less_(a,b){let $a=convertToTensor(a,"a","less"),$b=convertToTensor(b,"b","less");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.less($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Less)}var less=op({less_});function lessEqual_(a,b){let $a=convertToTensor(a,"a","lessEqual"),$b=convertToTensor(b,"b","lessEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.lessEqual($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,LessEqual)}var lessEqual=op({lessEqual_});function linspace(start,stop,num){if(num<=0)throw new Error("The number of values should be positive.");let attrs={start,stop,num};return ENGINE.runKernelFunc(backend3=>backend3.linspace(start,stop,num),{},null,LinSpace,attrs)}function localResponseNormalization_(x,depthRadius=5,bias=1,alpha=1,beta=.5){let $x=convertToTensor(x,"x","localResponseNormalization");assert($x.rank===4||$x.rank===3,()=>`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let forward=(backend3,save)=>{let y=backend3.localResponseNormalization4D(x4D,depthRadius,bias,alpha,beta);return save([x4D,y]),y},inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernelFunc(forward,inputs,null,LRN,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let $x=convertToTensor(x,"x","log"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log($x);return save([$x]),res},inputs,null,Log)}var log=op({log_});function log1p_(x){let $x=convertToTensor(x,"x","log1p"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.log1p($x);return save([$x]),res},inputs,null,Log1p)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads",null),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){let numNullGradients=grads2.filter(g=>g==null).length;if(numNullGradients>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function neg_(x){let $x=convertToTensor(x,"x","neg"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.neg($x),inputs,null,Negate)}var neg=op({neg_});function softplus_(x){let $x=convertToTensor(x,"x","softplus"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.softplus($x);return save([$x]),res},inputs,null,Softplus)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid"),customOp=customGrad(x2=>{let value=neg(softplus(neg(x2))),gradFunc=dy=>{let derX=mul(dy,sigmoid(neg(x2)));return derX};return{value,gradFunc}});return customOp($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","max"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),maxInput=$x;permutedAxes!=null&&(maxInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,maxInput.rank));let y=backend3.max(maxInput,axes);permutedAxes!=null&&maxInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,parseAxisParam(axis,$x.shape));res=reshape(res,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Max,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.subtract($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Sub)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=(backend3,save)=>{save([$x]);let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.sum(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Sum,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);let forward=(backend3,save)=>{let keepDims=!0,xMax=max(logits,axis,!0),shifted=sub(logits,xMax),value=sub(cast(shifted,"float32"),log(sum2(exp(shifted),axis,keepDims)));return save([value]),value},inputs={logits:$logits},attrs={axis};return ENGINE.runKernelFunc(forward,inputs,null,LogSoftmax,attrs)}var logSoftmax=op({logSoftmax_});function logSumExp_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","logSumExp"),axes=parseAxisParam(axis,$x.shape),xMax=max($x,axes,!0),a=sub($x,xMax),b=exp(a),c=sum2(b,axes),d=log(c),res=add2(reshape(xMax,d.shape),d);if(keepDims){let newShape=expandShapeToKeepDim(res.shape,axes);return reshape(res,newShape)}return res}var logSumExp=op({logSumExp_});function logicalAnd_(a,b){let $a=convertToTensor(a,"a","logicalAnd","bool"),$b=convertToTensor(b,"b","logicalAnd","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalAnd($a,$b),inputs,null,LogicalAnd)}var logicalAnd=op({logicalAnd_});function logicalNot_(x){let $x=convertToTensor(x,"x","logicalNot","bool"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.logicalNot($x),inputs,null,LogicalNot)}var logicalNot=op({logicalNot_});function logicalOr_(a,b){let $a=convertToTensor(a,"a","logicalOr","bool"),$b=convertToTensor(b,"b","logicalOr","bool");assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernelFunc(backend3=>backend3.logicalOr($a,$b),inputs,null,LogicalOr)}var logicalOr=op({logicalOr_});function logicalXor_(a,b){let $a=convertToTensor(a,"a","logicalXor","bool"),$b=convertToTensor(b,"b","logicalXor","bool");return assertAndGetBroadcastShape($a.shape,$b.shape),logicalAnd(logicalOr(a,b),logicalNot(logicalAnd(a,b)))}var logicalXor=op({logicalXor_});function maxPool_(x,filterSize,strides,pad10,dimRoundingMode){let $x=convertToTensor(x,"x","maxPool"),dilations=1,x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{let convInfo=computePool2DInfo(x4D.shape,filterSize,strides,1,pad10,dimRoundingMode),y;return convInfo.filterWidth===1&&convInfo.filterHeight===1&&arraysEqual(convInfo.inShape,convInfo.outShape)?y=x4D.clone():y=backend3.maxPool(x4D,convInfo),save([x4D,y]),y},inputs={x:x4D},attrs={filterSize,strides,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad10,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=(backend3,save)=>{dilations==null&&(dilations=[1,1,1]);let convInfo=computePool3DInfo(x5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode,dataFormat),y=backend3.maxPool3d(x5D,convInfo);return save([x5D,y]),y},inputs={x:x5D},attrs={filterSize,strides,pad:pad10,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3D,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad10,includeBatchInIndex=!1){let $x=convertToTensor(x,"x","maxPoolWithArgmax"),inputs={x:$x},attrs={filterSize,strides,pad:pad10,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real7=zeros(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real7=ones2(shape,"float32"),imag7=zeros(shape,"float32");return complex(real7,imag7)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function mean_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","mean"),axes=parseAxisParam(axis,$x.shape),shapes=computeOutAndReduceShapes($x.shape,axes),reduceShape=shapes[1],reduceSize=sizeFromShape(reduceShape),inputs={x:$x},attrs={axis,keepDims},forward=()=>{let reduceSizeScalar=scalar(reduceSize),xReduce=reduceSizeScalar.dtype===$x.dtype?$x:cast($x,reduceSizeScalar.dtype),res=div(xReduce,reduceSizeScalar);return sum2(res,axis,keepDims)},customOp=customGrad(x2=>{let value=ENGINE.runKernelFunc(forward,inputs,null,Mean,attrs),gradFunc=dy=>{let expandedDyShape=x2.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=div(mul(expandedDy,ones2(x2.shape,"float32")),reduceSize);return derX};return{value,gradFunc}});return customOp($x)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","min"),forward=(backend3,save)=>{let origAxes=parseAxisParam(axis,$x.shape),axes=origAxes,permutedAxes=getAxesPermutation(axes,$x.rank),minInput=$x;permutedAxes!=null&&(minInput=transpose($x,permutedAxes),axes=getInnerMostAxes(axes.length,$x.rank));let y=backend3.min(minInput,axes);permutedAxes!=null&&minInput.dispose();let res=y;if(keepDims){let expandedShape=expandShapeToKeepDim(res.shape,origAxes);res=reshape(y,expandedShape),y.dispose()}return save([$x,res]),res},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Min,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.minimum($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Minimum)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let forward=(backend3,save)=>{let res=backend3.mod($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,Mod)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={},inputsToSave=[$x],outputsToSave=[];return ENGINE.runKernelFunc((backend3,save)=>(save([$x]),backend3.square($x)),{x:$x},null,"Square",attrs,inputsToSave,outputsToSave)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data,c,h){let $data=convertToTensor(data,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let logits2D=origRank===1?reshape($logits,[1,-1]):$logits,res=ENGINE.runKernelFunc(backend3=>backend3.multinomial(logits2D,normalized,numSamples,seed),{logits2D});return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=backend3=>backend3.notEqual($a,$b),inputs={a:$a,b:$b};return ENGINE.runKernelFunc(forward,inputs,null,NotEqual)}var notEqual=op({notEqual_});function real_(input2){let $input=convertToTensor(input2,"input","real"),forward=backend3=>backend3.real($input),inputs={input:$input};return ENGINE.runKernelFunc(forward,inputs,null,Real)}var real=op({real_});function onesLike_(x){let $x=convertToTensor(x,"x","onesLike"),forward=(backend3,save)=>{if($x.dtype==="complex64"){let r=onesLike(real($x)),i=zerosLike(imag($x));return complex(r,i)}return backend3.onesLike($x)},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,OnesLike)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let forward=(backend3,save)=>(save([$x]),backend3.pad($x,paddings,constantValue)),attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,PadV2,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]===0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let forward=backend3=>backend3.spaceToBatchND($x,blockShape,paddings),inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernelFunc(forward,inputs,null,SpaceToBatchND,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad10,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad10===0&&(pad10="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad10),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad10==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad10:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),forwardOp=poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad),y=forwardOp(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let dilatedFilterShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)),padExtraShape=dilatedFilterShape.map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp12){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp12,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp},forward=(backend3,save)=>{let y=backend3.pow($base,$exp);return save([$base,$exp,y]),y};return ENGINE.runKernelFunc(forward,inputs,null,Pow)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),forward=(backend3,save)=>{let res=backend3.prelu($x,$alpha);return save([$x,$alpha]),res},inputs={x:$x,alpha:$alpha};return ENGINE.runKernelFunc(forward,inputs,null,Prelu)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let forward=backend3=>{let axes=parseAxisParam(axis,$x.shape),permutation=getAxesPermutation(axes,$x.rank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose($x,permutation),reductionAxes=getInnerMostAxes(reductionAxes.length,$x.rank));let value=backend3.prod(permutedX,reductionAxes);if(keepDims){let newShape=expandShapeToKeepDim(value.shape,axes);value=reshape(value,newShape)}return value},inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernelFunc(forward,inputs,null,Prod,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul63=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul63,resultY=this.mean+this.stdDev*v2*mul63,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min7,this.range=max9-min7,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min7} - ${max9} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i{let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return zeros([0],dtype);let numElements=Math.abs(Math.ceil((stop-start)/step8)),values=makeZerosTypedArray(numElements,dtype);stop{let res=backend3.reciprocal($x);return save([$x]),res},inputs,null,Reciprocal)}var reciprocal=op({reciprocal_});function relu_(x){let $x=convertToTensor(x,"x","relu"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu)}var relu=op({relu_});function relu6_(x){let $x=convertToTensor(x,"x","relu6"),forward=(backend3,save)=>(save([$x]),$x.dtype==="bool"?cast($x,"int32"):backend3.relu6($x)),inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Relu6)}var relu6=op({relu6_});function reverse_(x,axis){let $x=convertToTensor(x,"x","reverse"),forward=backend3=>{let axes=parseAxisParam(axis,$x.shape);if($x.rank===0)return clone($x);let res=backend3.reverse($x,axes);return reshape(res,$x.shape)},inputs={x:$x},attrs={dims:axis};return ENGINE.runKernelFunc(forward,inputs,null,Reverse,attrs)}var reverse=op({reverse_});function reverse1d_(x){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===1,()=>`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let $x=convertToTensor(x,"x","round"),inputs={x:$x};return ENGINE.runKernelFunc(backend3=>backend3.round($x),inputs,null,Round)}var round=op({round_});function rsqrt_(x){let $x=convertToTensor(x,"x","rsqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.rsqrt($x);return save([$x]),res},inputs,null,Rsqrt)}var rsqrt=op({rsqrt_});function selu_(x){let $x=convertToTensor(x,"x","selu"),forward=(backend3,save)=>{let res=backend3.selu($x);return save([$x]),res},inputs={x:$x};return ENGINE.runKernelFunc(forward,inputs,null,Selu)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad10,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad10,dataFormat,dilation),pointwiseStride=1,res=conv2d(depthwise,$pointwiseFilter,pointwiseStride,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;ibackend3.sign($x),inputs,null,Sign)}var sign=op({sign_});function sin_(x){let $x=convertToTensor(x,"x","sin"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sin($x);return save([$x]),res},inputs,null,Sin)}var sin=op({sin_});function sinh_(x){let $x=convertToTensor(x,"x","sinh"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sinh($x);return save([$x]),res},inputs,null,Sinh)}var sinh=op({sinh_});function slice1d_(x,begin,size){let $x=convertToTensor(x,"x","slice1d");return assert($x.rank===1,()=>`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernelFunc((backend3,save)=>{let y=backend3.softmax($logits,dim);return save([y]),y},inputs,null,Softmax,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=input2.as2D(batch,innerDimensionSize),result=backend3.fft(input2D);return result.reshape(input2.shape)},inputs,null,FFT)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernelFunc(backend3=>{let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,input2D=reshape(input2,[batch,innerDimensionSize]),result=backend3.ifft(input2D);return reshape(result,input2.shape)},inputs,null,IFFT)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function prepareSplitSize(x,numOrSizeSplits,axis=0){let splitSizes=[];if(typeof numOrSizeSplits=="number")assert(x.shape[axis]%numOrSizeSplits===0,()=>"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}function split_(x,numOrSizeSplits,axis=0){let $x=convertToTensor(x,"x","split"),forward=(backend3,_)=>{let $axis=parseAxisParam(axis,$x.shape)[0],splitSizes=prepareSplitSize($x,numOrSizeSplits,$axis);return backend3.split($x,splitSizes,$axis)},inputs={x:$x},attr={numOrSizeSplits,axis};return ENGINE.runKernelFunc(forward,inputs,null,SplitV,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let $x=convertToTensor(x,"x","sqrt"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.sqrt($x);return save([$x]),res},inputs,null,Sqrt)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let forward=(backend3,save)=>{let res=backend3.squaredDifference($a,$b);return save([$a,$b]),res},inputs={a:$a,b:$b},attrs={};return ENGINE.runKernelFunc(forward,inputs,null,SquaredDifference,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack");if(assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length===1)return expandDims($tensors[0],axis);let rank=$tensors[0].rank,shape=$tensors[0].shape,dtype=$tensors[0].dtype;assert(axis<=rank,()=>"Axis must be <= rank of the tensor"),$tensors.forEach(t=>{assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=$tensors.map(t=>expandDims(t,axis));return concat(expandedTensors,axis)}var stack=op({stack_});function step_(x,alpha=0){let $x=convertToTensor(x,"x","step"),inputs={x:$x},attrs={alpha};return ENGINE.runKernelFunc(backend3=>backend3.step($x,alpha),inputs,null,Step,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let $x=convertToTensor(x,"x","stridedSlice"),forward=backend3=>{strides==null&&(strides=new Array(begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=$x.rank-begin.length,expandAxes=maskToAxes(newAxisMask),newShape=$x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)}),$x=reshape($x,newShape);let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes($x.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided)return reshape(slice($x,begin,size),outShape);let res=backend3.stridedSlice($x,begin,end,strides);return reshape(res,outShape)},inputs={x:$x},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernelFunc(forward,inputs,null,StridedSlice,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let $x=convertToTensor(x,"x","tan"),inputs={x:$x};return ENGINE.runKernelFunc((backend3,save)=>{let res=backend3.tan($x);return save([$x]),res},inputs,null,Tan)}var tan=op({tan_});function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernelFunc(b=>b.topk($x,k,sorted),inputs,null,TopK,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean6=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean6,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments},forward=(backend3,save)=>{let res=backend3.unsortedSegmentSum($x,$segmentIds,numSegments);return save([$segmentIds]),res};return ENGINE.runKernelFunc(forward,inputs,null,UnsortedSegmentSum,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`),axis<0&&(axis+=$x.shape.length);let inputs={value:$x},attrs={axis},forward=backend3=>backend3.unstack($x,axis);return ENGINE.runKernelFunc(forward,inputs,null,Unpack,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step8!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step8,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let forward=backend3=>backend3.scatterND($indices,$updates,shape),inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernelFunc(forward,inputs,null,ScatterNd,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernelFunc(backend3=>backend3.sparseToDense($sparseIndices,$sparseValues,outputShape,$defaultValue),inputs,null,SparseToDense,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),$x=convertToTensor(x,"x","gatherND"),forward=backend3=>backend3.gatherND($x,$indices),inputs={params:$x,indices:$indices};return ENGINE.runKernelFunc(forward,inputs,null,GatherNd)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d5,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad10,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let dilations=1,$dataFormat=convertConv2DDataFormat(dataFormat),convInfo=computeConv2DInfo(x4D.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat);return backend3.conv2dDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv2DBackpropFilter,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>{let gradientMode=gradientDepth>0;return!gradientMode||activation2==="linear"};function fusedConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},forward=backend3=>{let res=backend3.fusedConv2d({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var conv2d5=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad10,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(x.shape,filterShape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerFilter(x4D,dy4D,convInfo)},inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad10,dimRoundingMode,dilations,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropFilter,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad10,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let forward=backend3=>{let convInfo=computeConv2DInfo(xShape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0);return backend3.depthwiseConv2DDerInput(dy4D,filter,convInfo)},inputs={dy:dy4D,filter},attrs={strides,pad:pad10,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernelFunc(forward,inputs,null,DepthwiseConv2dNativeBackpropInput,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad10,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad10,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad10,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad10,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad10,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},forward=backend3=>{let res=backend3.fusedDepthwiseConv2D({input:x4D,filter:$filter,convInfo,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return res},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad10,dataFormat,dilations,dimRoundingMode,activation:activation2};if(bias==null){let customOp=customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOp(x4D,$filter)}else{let customOpWithBias=customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,FusedDepthwiseConv2D,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}});return customOpWithBias(x4D,$filter,$bias)}}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},forward=backend3=>{let y=backend3.fusedBatchMatMul({a:a3D,b:b3D,transposeA,transposeB,bias:$bias,activation:activation2,preluActivationWeights:$preluActivationWeights});return y},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2};if(bias==null){let customOp=customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}});return customOp(a3D,b3D)}else{let customOpWithBias=customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernelFunc(forward,inputs,null,_FusedMatMul,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}});return customOpWithBias(a3D,b3D,$bias)}}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let forward=backend3=>backend3.cropAndResize($image,$boxes,$boxInd,cropSize,method,extrapolationValue),inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize},res=ENGINE.runKernelFunc(forward,inputs,null,CropAndResize,attrs);return res}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},res=ENGINE.runKernel(FlipLeftRight,inputs,{});return res}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center},res=ENGINE.runKernel(RotateWithOffset,inputs,attrs);return res}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernelFunc(b=>b.nonMaxSuppression($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold),{boxes:$boxes,scores:$scores},null,NonMaxSuppressionV3,attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0).selectedIndices}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices:tensor1d(selectedIndices,"int32")};return returnScoresTensor&&(result.selectedScores=tensor1d(selectedScores,"float32")),returnValidOutputs&&(result.validOutputs=scalar(validOutputs,"int32")),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],res=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),res=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),res}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`);let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,forward=(backend3,save)=>(save([batchImages]),backend3.resizeBilinear(batchImages,newHeight,newWidth,alignCorners)),inputs={images:batchImages},attrs={alignCorners,size},res=ENGINE.runKernelFunc(forward,inputs,null,ResizeBilinear,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[newHeight,newWidth]=size,inputs={images:batchImages},attrs={alignCorners,size},forward=(backend3,save)=>(save([batchImages]),backend3.resizeNearestNeighbor(batchImages,newHeight,newWidth,alignCorners)),res=ENGINE.runKernelFunc(forward,inputs,null,ResizeNearestNeighbor,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1===0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1===0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_});var Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses8,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses8,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses8=abs(sub($labels,$predictions));return computeWeightedLoss(losses8,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses8=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses8,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses8=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses8,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses8=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses8,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log(add2(sub(one,$predictions),epsilonScalar))),losses8=sub(l13,l23);return computeWeightedLoss(losses8,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses8=squaredDifference($labels,$predictions);return computeWeightedLoss(losses8,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses8=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);let customOp=customGrad((labels2,logits2,save)=>{let keepDims=!0,lse=logSumExp(logits2,[dim],keepDims),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2)),value=sum2(costVector,[dim]),gradFunc=(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]};return{value,gradFunc}});return customOp(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses8=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses8,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_});var spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy};var Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables5=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.rho,config.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config){return new cls(config.learningRate,config.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon,config.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);varNames.forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config){return new cls(config.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config){return new cls(config.learningRate,config.momentum,config.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables5=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables5.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables5.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config){return new cls(config.learningRate,config.decay,config.momentum,config.epsilon,config.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}};MomentumOptimizer,SGDOptimizer,AdadeltaOptimizer,AdagradOptimizer,RMSPropOptimizer,AdamaxOptimizer,AdamOptimizer;var train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam};var delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,linspaceImpl:()=>linspaceImpl,log:()=>log5,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function getImageCenter(center,imageHeight,imageWidth){let centerX=imageWidth*(typeof center=="number"?center:center[0]),centerY=imageHeight*(typeof center=="number"?center:center[1]);return[centerX,centerY]}function getReshaped(inputShape,blockShape,prod4,batchToSpace=!0){let reshaped=[];if(batchToSpace)reshaped=reshaped.concat(blockShape.slice(0)),reshaped.push(inputShape[0]/prod4),reshaped=reshaped.concat(inputShape.slice(1));else{reshaped=reshaped.concat(inputShape[0]);let spatialLength=blockShape.length;for(let i=0;i=blockShapeRank*2+1||i%2===1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod4,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod4):reshapedPermuted.push(inputShape[0]*prod4);for(let i=1;inonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,split:()=>split4,tile:()=>tile3,topkImpl:()=>topkImpl,whereImpl:()=>whereImpl});function split4(x,sizeSplits,axis){let begin=new Array(x.rank).fill(0),size=x.shape.slice();return sizeSplits.map(s=>{let sliceSize=[...size];sliceSize[axis]=s;let sliceT=slice(x,begin,sliceSize);return begin[axis]+=s,sliceT})}function tile3(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}};var acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}};var acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}};var addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}};var addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}};var argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}};var asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}};var atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)};return{a:derA,b:derB}}};var atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}};var atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dBackprop_(dy,input2,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dBackprop"),$input=convertToTensor(input2,"input","avgPool3dBackprop"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.avgPool3dBackprop(dy5D,input5D,convInfo)},inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dBackprop=op({avgPool3dBackprop_});var avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dBackprop(dy,x,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function avgPoolBackprop_(dy,input2,filterSize,strides,pad10){let $dy=convertToTensor(dy,"dy","avgPoolBackprop"),$input=convertToTensor(input2,"input","avgPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolBackprop: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolBackprop: input must be rank 4 but got rank ${input4D.rank}.`);let forward=backend3=>{let convInfo=computePool2DInfo(input4D.shape,filterSize,strides,1,pad10);return backend3.avgPoolBackprop(dy4D,input4D,convInfo)},inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad10},res=ENGINE.runKernelFunc(forward,inputs,null,AvgPoolBackprop,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolBackprop=op({avgPoolBackprop_});var avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>avgPoolBackprop(dy,x,filterSize,strides,pad10)}}};var batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}};var batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}};var broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}};var castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})};var ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})};var clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}};var concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]),derTensors=split(dy,sizeSplits,$axis);return derTensors.map(t=>()=>t)}};var conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad10,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad10,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad10,dataFormat)}}};var conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad10,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad10,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad10,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad10){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let forward=backend3=>{let dilations=1,convInfo=computeConv3DInfo(x5D.shape,filterShape,strides,dilations,pad10);return backend3.conv3dDerFilter(x5D,dy5D,convInfo)},inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad10,filterShape};return ENGINE.runKernelFunc(forward,inputs,null,Conv3DBackpropFilterV2,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_});var conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad10),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad10)}}};var cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}};var coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}};var cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse11}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse11);return permutation!=null&&(out=transpose(out,permutation)),out}}}};var depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad10,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad10,dilations,dimRoundingMode)}}};var dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}};var divGradConfig={kernelName:Div,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}};var eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,backPropKernelFunc=backend3=>backend3.eluDer(dy,y),inputs={dy,y};return{x:()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,EluGrad)}}};var erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}};var expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}};var expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}};var floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})};var floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))};return{a:derA,b:derB}}};var fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean6,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean6.shape,x.shape),tileShape=[];if(mean6.rank===1){for(let i=0;imean6.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean6.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),derMean=()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean6.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean6.shape)},derVariance=()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean6.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean6.shape)},derScale=()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean6.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean6.shape)},derOffset=()=>{let offsetDer=dy;return mean6.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean6.shape)};return{x:derX,mean:derMean,variance:derVariance,scale:derScale,offset:derOffset}}};var gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0],derX=()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad};return{x:derX,indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}};var identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})};var isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})};var log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}};var logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}};var logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax5=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax5))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let forward=backend3=>backend3.LRNGrad(dy,x,y,depthRadius,bias,alpha,beta),inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernelFunc(forward,inputs,null,LRNBackprop,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_});var lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rank{let dx=mul(dy,cast(equal(xOrig,y),dy.dtype));return dx}}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}};var maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(greaterEqual(a,b),"float32")),derB=()=>mul(dy,cast(less(a,b),"float32"));return{a:derA,b:derB}}};function maxPool3dBackprop_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dBackprop"),$input=convertToTensor(input2,"input","maxPool3dBackprop"),$output=convertToTensor(output,"output","maxPool3dBackprop"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dBackprop: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dBackprop: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dBackprop: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool3DInfo(input5D.shape,filterSize,strides,dilations,pad10,dimRoundingMode);return backend3.maxPool3dBackprop(dy5D,input5D,output5D,convInfo)},inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad10,dimRoundingMode},res=ENGINE.runKernelFunc(forward,inputs,null,MaxPool3DBackprop,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dBackprop=op({maxPool3dBackprop_});var maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dBackprop(dy,x,y,filterSize,strides,$dilations,pad10,dimRoundingMode)}}};function maxPoolBackprop_(dy,input2,output,filterSize,strides,pad10,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolBackprop"),$input=convertToTensor(input2,"input","maxPoolBackprop"),$output=convertToTensor(output,"output","maxPoolBackprop");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolBackprop: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolBackprop: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad10),()=>`Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad10}.`);let forward=backend3=>{let convInfo=computePool2DInfo($input.shape,filterSize,strides,1,pad10,dimRoundingMode);return backend3.maxPoolBackprop($dy,$input,$output,convInfo)},inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad10,dimRoundingMode};return ENGINE.runKernelFunc(forward,inputs,null,MaxPoolBackprop,attrs)}var maxPoolBackprop=op({maxPoolBackprop_});var maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad10}=attrs;return{x:()=>maxPoolBackprop(dy,x,y,filterSize,strides,pad10)}}};var minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}};var minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,derA=()=>mul(dy,cast(lessEqual(a,b),"float32")),derB=()=>mul(dy,cast(greater(a,b),"float32"));return{a:derA,b:derB}}};var mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},derB=()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}};var multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},derB=()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res};return{a:derA,b:derB}}};var negateGradConfig={kernelName:Negate,gradFunc:dy=>({x:()=>neg(dy)})};var oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}};var onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})};var padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp12=b,outShape=assertAndGetBroadcastShape(base2.shape,exp12.shape),derBase=()=>{let expFloat=cast(exp12,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},derExp=()=>{let condition=greater(base2,0),logBase=where(condition,log(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp12.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp12.shape)};return{a:derBase,b:derExp}}};var preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}};var reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}};var relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}};var reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}};var reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}};var resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeBilinearBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeBilinearGrad,attrs);return{images:imagesDer}}};var resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,backPropKernelFunc=backend3=>{let{alignCorners}=attrs;return backend3.resizeNearestNeighborBackprop(dy,images,alignCorners)},inputs={images},imagesDer=()=>ENGINE.runKernelFunc(backPropKernelFunc,inputs,null,ResizeNearestNeighborGrad,attrs);return{images:imagesDer}}};var reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}};var roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})};var rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}};var selectV2PoolGradConfig={kernelName:SelectV2,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}};var seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}};var sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}};var signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})};var sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}};var sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}};var sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}};var softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}};var softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}};var spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}};var splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}};var sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}};var squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}};var squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2),derA=()=>mul(dy,mul(two,sub(a,b))),derB=()=>mul(dy,mul(two,sub(b,a)));return{a:derA,b:derB}}};var stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})};var subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape),derA=()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},derB=()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)};return{a:derA,b:derB}}};var sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs,axes=parseAxisParam(axis,x.shape);axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}};var tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}};var tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}};var tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs,derX=()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}};var unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}};var unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved,derX=()=>gatherDropNegatives(dy,segmentIds);return{x:derX}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})};var gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negateGradConfig,oneHotGradConfig,onesLikeGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectV2PoolGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean6,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean6,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min7,max9){return this.throwIfDisposed(),clipByValue(this,min7,max9)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad10,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad10,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad10,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse11){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse11)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad10,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad10,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad10,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad10,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad10,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad10,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding2,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding2,dilationRate,strides)};Tensor.prototype.powStrict=function(exp12){return this.throwIfDisposed(),powStrict(this,exp12)};Tensor.prototype.pow=function(exp12){return this.throwIfDisposed(),pow(this,exp12)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad10,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var seedrandom2=__toModule(require_seedrandom4());function assertNotComplex(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var nonMaxSuppressionV3Impl2=kernel_impls_exports.nonMaxSuppressionV3Impl,split8=kernel_impls_exports.split,tile7=kernel_impls_exports.tile,topkImpl2=kernel_impls_exports.topkImpl,whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine15())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer11=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer11.set(xBuf.get(...inLoc),...outLoc)}return buffer11.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax10&&(max10=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse12){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse12?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile8(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum29=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum29+=z*z}return sum29}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real8=complexVals.complexTensorInfos.real,imag8=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real8.dataId).values,imagVals=cpuBackend.data.get(imag8.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex9(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,realVals=backend3.data.get(real8.dataId).values,imagVals=backend3.data.get(imag8.dataId).values,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.data.get(complexInfo.dataId);return complex11.complexTensorInfos={real:backend3.makeTensorInfo(real8.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag8.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex9};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real8=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real8.dataId).values;return backend3.makeTensorInfo(real8.shape,real8.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real6};function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast48};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast48({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast48({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex9({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add31=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add31};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil4=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil4};var expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp12=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp12};var expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm14=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm14};var floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor6=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor6};var logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log9=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log9};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax10&&(max10=value)}vals[i]=max10}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply};var notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2};var rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt5=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt5};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice19(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice19};var squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2};var subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub34=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub34};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu6=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu6};var preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu6};var relu9=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu9};var relu66=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu66};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu9({inputs:{x},backend:backend3});if(activation2==="elu")return elu6({inputs:{x},backend:backend3});if(activation2==="relu6")return relu66({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu6({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape87(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real8=xData.complexTensorInfos.real,imag8=xData.complexTensorInfos.imag;real8.shape=$shape,imag8.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape87};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape87({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape87({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos4};var acosh4=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh4};var asin4=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin4};var asinh4=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh4};var atan5=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan5};var atanh4=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh4};function pool5(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean7,variance}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean7,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean7.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2};var clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concat17({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat17({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape87({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat17};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos6};var cosh5=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh5};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad11,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}};var dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}};var dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad11,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad11,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}};var divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div35=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div35};var p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf4=unaryKernelFunc(Erf,xi=>{let sign5=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign5*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf4};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3};var isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2};var isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3};var log1p5=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p5};var logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2};var maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer11=pool5(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer11.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool5(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad11),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2};var nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}};var nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2};var reciprocal4=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal4};var rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round4};var scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu5=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu5};var sigmoid7=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid7};var sign4=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign4};var sin5=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin5};var sinh5=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh5};var epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus5=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt13};var squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step8};var tan4=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan4};var tanh6=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh6};function unique5(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique5};var kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad11=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad11)+line),maxLineLength=0;for(let i=0;i0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}stridedSlice(x,begin,end,strides){assertNotComplex(x,"stridedSlice");let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let buffer10=buffer(outShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;iinLoc[ax]=x.shape[ax]-1-inLoc[ax]),buffer10.set(xBuf.get(...inLoc),...outLoc)}return buffer10.toTensor()}neg(x){return assertNotComplex(x,"neg"),mul(scalar(-1),x)}addN(tensors){assertNotComplex(tensors,"addN");let vals=tensors.map(t=>this.readSync(t.dataId)),result=buffer(tensors[0].shape,tensors[0].dtype),resultVals=result.values;for(let i=0;iMath.pow(aValue,bValue))}floorDiv(a,b){assertNotComplex([a,b],"floorDiv");let op2=(a6,b2)=>Math.floor(a6/b2),outputDtype="int32";return this.broadcastedBinaryOp(a,b,outputDtype,op2)}sum(x,axes){assertNotComplex(x,"sum"),backend_util_exports.assertAxesAreInnerMostDims("sum",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),resultDtype=upcastType(x.dtype,"int32"),result=zeros(outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;imax9&&(max9=value,maxIndex=j)}vals[i]=maxIndex}return result}cumsum(x,axis,exclusive,reverse11){if(assertNotComplex(x,"cumsum"),axis!==x.rank-1)throw new Error(`backend.cumsum in CPU expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let resultDtype=upcastType(x.dtype,"int32"),result=zeros(x.shape,resultDtype),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId),finalDim=x.shape[x.rank-1],indexAdjuster=reverse11?(i,j)=>i+finalDim-j-1:(i,j)=>i+j;for(let i=0;iaVal===bVal?1:0)}notEqual(a,b){return assertNotComplex([a,b],"notEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal!==bVal?1:0)}less(a,b){return assertNotComplex([a,b],"less"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aValaVal<=bVal?1:0)}greater(a,b){return assertNotComplex([a,b],"greater"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>bVal?1:0)}greaterEqual(a,b){return assertNotComplex([a,b],"greaterEqual"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal>=bVal?1:0)}logicalAnd(a,b){return assertNotComplex([a,b],"logicalAnd"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal&&bVal)}logicalOr(a,b){return assertNotComplex([a,b],"logicalOr"),this.broadcastedBinaryOp(a,b,"bool",(aVal,bVal)=>aVal||bVal)}select(condition,a,b){assertNotComplex([condition,a,b],"select");let values=this.readSync(condition.dataId),aValues=this.readSync(a.dataId),bValues=this.readSync(b.dataId),result=zeros(a.shape,upcastType(a.dtype,b.dtype)),newValues=this.readSync(result.dataId),index=0,offset=condition.rank===0||condition.rank>1||a.rank===1?1:util_exports.sizeFromShape(a.shape.slice(1));for(let i=0;iMath.min(aVal,bVal))}mod(a,b){return assertNotComplex([a,b],"mod"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>{let rem=aVal%bVal;return aVal<0&&bVal<0||aVal>=0&&bVal>=0?rem:(rem+bVal)%bVal})}maximum(a,b){return assertNotComplex([a,b],"maximum"),this.broadcastedBinaryOp(a,b,a.dtype,(aVal,bVal)=>Math.max(aVal,bVal))}all(x,axes){assertNotComplex(x,"all"),backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),result=zeros(outShape,x.dtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=this.readSync(result.dataId),aVals=this.readSync(x.dataId);for(let i=0;i{let diff=aVal-bVal;return diff*diff})}eluDer(dy,y){assertNotComplex([dy,y],"eluDer");let resultValues=new Float32Array(y.size),values=this.readSync(y.dataId),dyValues=this.readSync(dy.dataId);for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return this.makeOutput(resultValues,y.shape,"float32")}atan2(a,b){return assertNotComplex([a,b],"atan2"),this.broadcastedBinaryOp(a,b,a.dtype,(aValue,bValue)=>Math.atan2(aValue,bValue))}tile(x,reps){return assertNotComplex(x,"tile"),tile7(this.bufferSync(x),reps)}gather(x,indices,axis){assertNotComplex([x,indices],"gather");let newShape=x.shape.slice(),indicesValues=this.readSync(indices.dataId);newShape[axis]=indicesValues.length;let result=buffer(newShape,x.dtype),xBuf=this.bufferSync(x);for(let i=0;ia*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}pool3d(x,convInfo,poolType){assertNotComplex(x,"pool3d");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,xValues=this.readSync(x.dataId),output=buffer(convInfo.outShape,x.dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output.toTensor()}avgPool3d(x,convInfo){return assertNotComplex(x,"avgPool3d"),this.pool3d(x,convInfo,"avg").toFloat()}avgPool3dBackprop(dy,x,convInfo){assertNotComplex([dy,x],"avgPool3dBackprop");let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}maxPool3d(x,convInfo){return assertNotComplex(x,"maxPool3d"),this.pool3d(x,convInfo,"max").toFloat()}maxPool3dPositions(x,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=this.bufferSync(x);for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions.toTensor()}maxPool3dBackprop(dy,x,y,convInfo){assertNotComplex([x,y],"maxPool3dBackprop");let maxPositions=this.maxPool3dPositions(x,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),maxPosBuf=this.bufferSync(maxPositions),dyBuf=this.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth)continue;for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow)continue;for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel);dotProd+=pixel*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return dx.toTensor()}resizeBilinear(x,newHeight,newWidth,alignCorners){assertNotComplex(x,"resizeBilinear");let[batch,oldHeight,oldWidth,numChannels]=x.shape,xValues=this.readSync(x.dataId),result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=this.readSync(dy.dataId),offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dy.strides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r!==sourceNearestRow)continue;for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dy.strides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return tensor4d(output,x.shape,x.dtype)}localResponseNormalization4D(x,depthRadius,bias,alpha,beta){assertNotComplex(x,"localResponseNormalization4D");let channels=x.shape[3],maxD=channels-1,xValues=this.readSync(x.dataId),size=x.size,result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum28=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum28+=z*z}return sum28}for(let offset=0;offset=0&&indicesVal[event]`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=this.readSync(x.dataId),result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;baLoc[d]=0);let aIndex=aBuf.locToIndex(aLoc),bLoc=loc.slice(-b.rank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=bBuf.locToIndex(bLoc);resVals[i]=op2(aVals[aIndex],bVals[bIndex])}}return result.toTensor()}split(x,sizeSplits,axis){return split8(x,sizeSplits,axis)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}cropAndResize(images,boxes,boxIndex,cropSize,method,extrapolationValue){let[batch,imageHeight,imageWidth,numChannels]=images.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=this.readSync(boxes.dataId),boxIndVals=this.readSync(boxIndex.dataId),imageVals=this.readSync(images.dataId),inStride=images.strides,outStride=output.strides;for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c=x.size/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${x.shape}`);for(let k=0;k=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;kaddImpl,ceilImpl:()=>ceilImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,multiplyImpl:()=>multiplyImpl,notEqualImpl:()=>notEqualImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,subImpl:()=>subImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape));if(x.dtype!=="complex64"){let values=cpuBackend.data.get(x.dataId).values;resultValues=simpleAbsImpl(values)}else{let complexVals=cpuBackend.data.get(x.dataId),real7=complexVals.complexTensorInfos.real,imag7=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real7.dataId).values,imagVals=cpuBackend.data.get(imag7.dataId).values;for(let i=0;i{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex8(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,realVals=backend3.data.get(real7.dataId).values,imagVals=backend3.data.get(imag7.dataId).values,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.data.get(complexInfo.dataId);return complex10.complexTensorInfos={real:backend3.makeTensorInfo(real7.shape,"float32",realVals),imag:backend3.makeTensorInfo(imag7.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex8};function identity(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity};function real5(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,real7=backend3.data.get(input2.dataId).complexTensorInfos.real,realVal=backend3.data.get(real7.dataId).values;return backend3.makeTensorInfo(real7.shape,real7.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real5};function cast47(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast47({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex8({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real5({inputs:{input:x},backend:backend3}),result=cast47({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend3.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend3.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend3.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend3.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast47};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend3})=>{let{a,b}=inputs,cpuBackend=backend3;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast47({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast47({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex8({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add30=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add30};function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend3,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil3=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil3};var expImpl=createSimpleUnaryImpl(xi=>Math.exp(xi)),exp11=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp11};var expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm13=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm13};var floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor5=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor5};var logImpl=createSimpleUnaryImpl(xi=>Math.log(xi)),log8=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log8};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax9&&(max9=value)}vals[i]=max9}return vals}var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply};var notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2};var rsqrtImpl=createSimpleUnaryImpl(xi=>1/Math.sqrt(xi)),rsqrt4=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt4};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return vals.subarray(flatOffset,flatOffset+length)}let outVals=util_exports.getTypedArrayFromDType(dtype,length);for(let i=0;iidx+begin[j]),xIndex=util_exports.locToIndex(xLoc,shape.length,xStrides);outVals[i]=vals[xIndex]}return outVals}function slice18(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend3.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend3.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice18};var squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2};var subImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub33=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub33};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu5=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu5};var preluImpl=createSimpleBinaryKernelImpl((xValue,aValue)=>xValue<0?aValue*xValue:xValue);function prelu5(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend3.data.get(x.dataId).values,bVals=backend3.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend3.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu5};var relu8=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu8};var relu65=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu65};function applyActivation2(backend3,x,activation2,preluActivationWeights){if(activation2==="linear")return identity({inputs:{x},backend:backend3});if(activation2==="relu")return relu8({inputs:{x},backend:backend3});if(activation2==="elu")return elu5({inputs:{x},backend:backend3});if(activation2==="relu6")return relu65({inputs:{x},backend:backend3});if(activation2==="prelu")return prelu5({inputs:{x,alpha:preluActivationWeights},backend:backend3});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape86(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend3.incRef(x.dataId);let xData=backend3.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real7=xData.complexTensorInfos.real,imag7=xData.complexTensorInfos.imag;real7.shape=$shape,imag7.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape86};function batchMatMul(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape86({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape86({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend3.data.get(a3d.dataId).values,b3dValues=backend3.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend3.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos3};var acosh3=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh3};var asin3=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin3};var asinh3=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh3};var atan4=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan4};var atanh3=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh3};function pool4(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function avgPool2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolBackpropConfig={kernelName:AvgPoolBackprop,backendName:"cpu",kernelFunc:avgPoolBackprop2};function batchNorm2(args){let{inputs,backend:backend3,attrs}=args,{x,scale:scale2,offset,mean:mean6,variance}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean6,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend3.data.get(x.dataId).values,mVals=backend3.data.get(mean6.dataId).values,varVals=backend3.data.get(variance.dataId).values,sVals=scale2?backend3.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend3.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend3.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2};var clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xit.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real5({inputs:{input:t},backend:backend3})),imags=$inputs.map(t=>imag5({inputs:{input:t},backend:backend3})),realConcated=concat16({inputs:reals,backend:backend3,attrs:{axis:$axis}}),imagConcated=concat16({inputs:imags,backend:backend3,attrs:{axis:$axis}}),result=complex8({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis)),shape=[-1,innerSize];return reshape86({inputs:{x:t},backend:backend3,attrs:{shape}})});outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let outVals=util_exports.getTypedArrayFromDType($inputs[0].dtype,util_exports.sizeFromShape(outShape));if(inputs2D[0].shape[0]===1){let offset=0;inputs2D.forEach(t=>{let val=backend3.data.get(t.dataId).values,size=util_exports.sizeFromShape(t.shape);outVals.set(val,offset),offset+=size})}else{let colOffset=0;inputs2D.forEach(t=>{let tVals=backend3.data.get(t.dataId).values,tIdx=0;for(let row=0;rowt.shape),$axis),outInfo=backend3.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend3.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat16};function conv2D(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos5};var cosh4=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh4};function depthwiseConv2dNative(args){let{inputs,backend:backend3,attrs}=args,{x,filter}=inputs,{strides,pad:pad10,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"depthwiseConv2DNative");let xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend3.data.get(x.dataId).values,wVals=backend3.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}let dataId=cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype);return{dataId,shape:outShape,dtype:x.dtype}}};var dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients8[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),filter.shape,filter.dtype);return{dataId,shape:filter.shape,dtype:filter.dtype}}};var dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad10,dilations}=attrs,cpuBackend=backend3,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad10,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients8=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients8[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}let dataId=cpuBackend.write(util_exports.toTypedArray(gradients8,x.dtype),x.shape,x.dtype);return{dataId,shape:x.shape,dtype:x.dtype}}};var divImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div34=binaryKernelFunc(Div,divImpl),divConfig={kernelName:Div,backendName:"cpu",kernelFunc:div34};var p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf3=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf3};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXNumber.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3};var isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2};var isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3};var log1p4=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p4};var logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2};var maxConfig={kernelName:Max,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,cpuBackend=backend3,xShape=x.shape,xRank=xShape.length,origAxes=util_exports.parseAxisParam(reductionIndices,xShape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xVals=cpuBackend.data.get(x.dataId).values;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity({inputs:{x},backend:backend3});else{let xValues=backend3.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer10=pool4(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend3.makeTensorInfo(convInfo.outShape,x.dtype,buffer10.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPoolBackprop2(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),xValues=backend3.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend3.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR)continue;for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;let pixel=dyBuf.get(b,dyR,dyC,d);dotProd+=pixel*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend3.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolBackpropConfig={kernelName:MaxPoolBackprop,backendName:"cpu",kernelFunc:maxPoolBackprop2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool4(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,cpuBackend=backend3;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad10),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function mirrorPad2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,mode}=attrs;assertNotComplex(x,"mirrorPad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend3.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2};var nonMaxSuppressionV4Impl2=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config={kernelName:NonMaxSuppressionV4,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionPadded");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl2(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}};var nonMaxSuppressionV5Impl2=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config={kernelName:NonMaxSuppressionV5,backendName:"cpu",kernelFunc:({inputs,backend:backend3,attrs})=>{let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,cpuBackend=backend3;assertNotComplex(boxes,"NonMaxSuppressionWithScore");let boxesVals=cpuBackend.data.get(boxes.dataId).values,scoresVals=cpuBackend.data.get(scores.dataId).values,maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl2(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};function padV2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend3.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}let outId=backend3.write(resVals,outShape,x.dtype);return{dataId:outId,shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2};var reciprocal3=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal3};var rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend3,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2===0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3};var scaleAlpha=backend_util_exports.SELU_SCALEALPHA,scale=backend_util_exports.SELU_SCALE,selu4=unaryKernelFunc(Selu,xi=>xi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu4};var sigmoid6=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid6};var sign3=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign3};var sin4=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin4};var sinh4=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh4};var epsilon=11920928955078125e-23,threshold=Math.log(epsilon)+2,softplus4=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xiMath.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt12};var squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend3})=>{let{x}=inputs,cpuBackend=backend3;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step7};var tan3=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan3};var tanh5=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh5};function unique4(args){let{inputs,attrs,backend:backend3}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend3.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend3.makeTensorInfo(outputShape,x.dtype,outputValues),backend3.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique4};var kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,asinConfig,asinhConfig,atanConfig,atanhConfig,avgPoolConfig,avgPoolBackpropConfig,batchMatMulConfig,batchNormConfig,castConfig,ceilConfig,clipConfig,complexConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,divConfig,eluConfig,erfConfig,expConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,logConfig,log1pConfig,logicalNotConfig,maxPoolConfig,maxPoolBackpropConfig,maxPoolWithArgmaxConfig,maxConfig,mirrorPadConfig,multiplyConfig,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,padV2Config,preluConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softplusConfig,spaceToBatchNDConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,subConfig,tanConfig,tanhConfig,transposeConfig,uniqueConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var webgl_util_exports={};__export(webgl_util_exports,{assertNotComplex:()=>assertNotComplex2,bindCanvasToFramebuffer:()=>bindCanvasToFramebuffer,bindColorTextureToFramebuffer:()=>bindColorTextureToFramebuffer,bindTextureToProgramUniformSampler:()=>bindTextureToProgramUniformSampler,bindTextureUnit:()=>bindTextureUnit,bindVertexBufferToProgramAttribute:()=>bindVertexBufferToProgramAttribute,callAndCheck:()=>callAndCheck,canBeRepresented:()=>canBeRepresented,createFragmentShader:()=>createFragmentShader,createFramebuffer:()=>createFramebuffer,createProgram:()=>createProgram,createStaticIndexBuffer:()=>createStaticIndexBuffer,createStaticVertexBuffer:()=>createStaticVertexBuffer,createTexture:()=>createTexture,createVertexShader:()=>createVertexShader,getBatchDim:()=>getBatchDim,getExtensionOrThrow:()=>getExtensionOrThrow,getFramebufferErrorMessage:()=>getFramebufferErrorMessage,getMaxTexturesInShader:()=>getMaxTexturesInShader,getNumChannels:()=>getNumChannels,getProgramUniformLocation:()=>getProgramUniformLocation,getProgramUniformLocationOrThrow:()=>getProgramUniformLocationOrThrow,getRowsCols:()=>getRowsCols,getShapeAs3D:()=>getShapeAs3D,getTextureShapeFromLogicalShape:()=>getTextureShapeFromLogicalShape,getWebGLDisjointQueryTimerVersion:()=>getWebGLDisjointQueryTimerVersion,getWebGLErrorMessage:()=>getWebGLErrorMessage,getWebGLMaxTextureSize:()=>getWebGLMaxTextureSize,hasExtension:()=>hasExtension,isCapableOfRenderingToFloatTexture:()=>isCapableOfRenderingToFloatTexture,isDownloadFloatTextureEnabled:()=>isDownloadFloatTextureEnabled,isReshapeFree:()=>isReshapeFree,isWebGLFenceEnabled:()=>isWebGLFenceEnabled,isWebGLVersionEnabled:()=>isWebGLVersionEnabled,linkProgram:()=>linkProgram,resetMaxTextureSize:()=>resetMaxTextureSize,resetMaxTexturesInShader:()=>resetMaxTexturesInShader,unbindColorTextureFromFramebuffer:()=>unbindColorTextureFromFramebuffer,unbindTextureUnit:()=>unbindTextureUnit,validateFramebuffer:()=>validateFramebuffer,validateProgram:()=>validateProgram,validateTextureSize:()=>validateTextureSize});var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` +`),pad10=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad10)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer11}function createStaticIndexBuffer(gl,data){let buffer11=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer11}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max10=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max10+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer11,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer11)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor168,opName){Array.isArray(tensor168)||(tensor168=[tensor168]),tensor168.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports;var AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`float v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` +`))}function createProgram(gl){return throwIfNull(gl,()=>gl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer10}function createStaticIndexBuffer(gl,data){let buffer10=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer10}function getNumChannels(){return env().getNumber("WEBGL_VERSION")===2?1:4}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max9=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max9+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer10,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer10)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function unbindTextureUnit(gl,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindCanvasToFramebuffer(gl){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.viewport(0,0,gl.canvas.width,gl.canvas.height)),callAndCheck(gl,()=>gl.scissor(0,0,gl.canvas.width,gl.canvas.height))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1],isScalar=shape.length===0||shape.length===1&&shape[0]===1;return isScalar||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2){let squeezeResult=util_exports.squeezeShape(logShape);logShape=squeezeResult.newShape}let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2===0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2))return!0;if(!shape1.length||!shape2.length)return!0;if(shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols)return!0;if(isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function resetMaxTextureSize(){MAX_TEXTURE_SIZE=null}function resetMaxTexturesInShader(){MAX_TEXTURES_IN_SHADER=null}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){let ext=gl.getExtension(extensionName);return ext!=null}function isWebGLVersionEnabled(webGLVersion){try{let gl=getWebGLContext(webGLVersion);if(gl!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1;if(!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}let isFrameBufferComplete=createFloatTextureAndBindToFramebuffer(gl);return isFrameBufferComplete}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){if(webGLVersion!==2)return!1;let gl=getWebGLContext(webGLVersion),isEnabled=gl.fenceSync!=null;return isEnabled}function assertNotComplex2(tensor167,opName){Array.isArray(tensor167)||(tensor167=[tensor167]),tensor167.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>{let useUniforms=ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED");return useUniforms?4:0});ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});var{simpleAbsImpl:simpleAbsImplCPU,addImpl:addImplCPU,ceilImpl:ceilImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,multiplyImpl:multiplyImplCPU,rsqrtImpl:rsqrtImplCPU,sliceImpl:sliceImplCPU,subImpl:subImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports;var AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - float result = ${operation211}; + float result = ${operation210}; setOutput(result); } - `}};var AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable3=>{snippets.push(`vec4 v${variable3} = get${variable3}AtOutCoords();`)});let operation211=this.variableNames.map(variable3=>`v${variable3}`).join(" + ");this.userCode=` + `}};var AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation210=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` void main() { ${snippets.join(` `)} - vec4 result = ${operation211}; + vec4 result = ${operation210}; setOutput(result); } `}};var ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` @@ -64,7 +64,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } setOutput(float(bestIndex)); } - `}};function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;i 0.0 || val < 0.0) ? false : val != 0.0; } @@ -84,7 +84,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version22="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(version19="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -109,7 +109,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version22,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:version19,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` int getFlatIndex(ivec3 coords) { return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; } @@ -1034,7 +1034,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}};var ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}};var ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1048,7 +1048,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min8,max10){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min8),gpgpu.gl.uniform1f(this.maxLoc,max10)}}};var ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(min7,max9){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min7),gpgpu.gl.uniform1f(this.maxLoc,max9)}}};var ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1818,7 +1818,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(newValue); } } - `}},CumSumProgram=class{constructor(shape,exclusive,reverse12){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse12?`end != ${length-1}`:"end != 0",idxString=reverse12?"end + 1":"end - 1"):(condition=reverse12?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse12?"end + pow2":"end - pow2"),this.userCode=` + `}},CumSumProgram=class{constructor(shape,exclusive,reverse11){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse11?`end != ${length-1}`:"end != 0",idxString=reverse11?"end + 1":"end - 1"):(condition=reverse11?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse11?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${getCoordsDataType(rank)} coords = getOutputCoords(); @@ -2019,7 +2019,7 @@ return (round(mod(b, 2.0)) != 1) ? void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer11=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer11}function downloadFloat32MatrixFromBuffer(gl,buffer11,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer11,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer11),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer11,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer11,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer11,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer11,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&(binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity)),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` + }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer));let success=bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset);return success&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer10=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10));let bytesPerFloat=4,valuesPerTexel=4,bufferSizeBytes=bytesPerFloat*valuesPerTexel*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer10}function downloadFloat32MatrixFromBuffer(gl,buffer10,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer10,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer10),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer10,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer10,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer10,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer10,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl,timeElapsedNanos=gl2.getQueryParameter(query,gl2.QUERY_RESULT);return timeElapsedNanos/1e6}else{let ext=this.getQueryTimerExtensionWebGL1(),timeElapsedNanos=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT);return timeElapsedNanos/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){if(this.itemsToPoll.push({isDoneFn,resolveFn}),this.itemsToPoll.length>1)return;util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&(binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity)),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc==null)return;if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` blockIndex = rc.y + ${col}; pos = rc.x + ${row}; @@ -3544,7 +3544,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput(getChannel(packedInput, ${coords2})); } - `}};var{segment_util:segment_util2}=backend_util_exports,split10=kernel_impls_exports.split,tile9=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice21,shape,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice21,dtype,complexTensorInfos,isPacked}=texData;if(slice21!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer11=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer11=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer11==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer11,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice21}=this.texData.get(dataId),key=slice21&&slice21.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data=this.readSync(x.dataId),decodedData=data.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile9(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse12){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse12),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse12),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min8,max10){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min8,max10);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split10(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex10(args){let{inputs,backend:backend3}=args,{real:real8,imag:imag8}=inputs,complexInfo=backend3.makeTensorInfo(real8.shape,"complex64"),complex11=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real8},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag8},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex11.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex10};var CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` + `}};var{segment_util:segment_util2}=backend_util_exports,split9=kernel_impls_exports.split,tile8=kernel_impls_exports.tile,topkImpl3=kernel_impls_exports.topkImpl,whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU2:ELU;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU2:PRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MATMUL_SHARED_DIM_THRESHOLD=1e3,MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine15())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice20,shape,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice20,dtype,complexTensorInfos,isPacked}=texData;if(slice20!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer10=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer10=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer10==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer10,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}checkNumericalProblems(values){if(values==null)return;for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice20}=this.texData.get(dataId),key=slice20&&slice20.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine15().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)this.cpuBackend.stridedSlice(x,begin,end,strides));if(cpuRes)return cpuRes;let outShape=slice_util_exports.computeOutShape(begin,end,strides);if(outShape.some(axis=>axis===0))return tensor4([],outShape);let program=new StridedSliceProgram(begin,strides,outShape);return this.compileAndRun(program,[x])}reverse(x,axis){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,axis):new ReverseProgram(x.shape,axis);return this.compileAndRun(program,[x])}neg(x){let cpuRes=this.tryRunOnCpuOrThrow([x],()=>this.cpuBackend.neg(x));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,NEG,x.dtype);let program=new UnaryOpProgram(x.shape,NEG);return this.compileAndRun(program,[x])}batchMatMul(a,b,transposeA,transposeB){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],sharedDim=transposeA?a.shape[1]:a.shape[2],batch=Math.max(a.shape[0],b.shape[0]);if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD){transposeA&&(a=transpose(a,[0,2,1])),transposeB&&(b=transpose(b,[0,2,1]));let a3D=outerShapeB===1?a:a.as3D(batch,sharedDim,1),axis=outerShapeB===1?2:1,b3D=outerShapeB===1?b.as3D(batch,1,sharedDim):b,product=mul(a3D,b3D);return product.sum(axis,!0)}let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB);return this.compileAndRun(program,[a,b],dtype)}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){let outerShapeA=transposeA?a.shape[2]:a.shape[1],outerShapeB=transposeB?b.shape[1]:b.shape[2],batch=Math.max(a.shape[0],b.shape[0]),dtype=upcastType(a.dtype,b.dtype),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,program=new MatMulPackedProgram(a.shape,b.shape,[batch,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[a,b];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs,dtype)}localResponseNormalization4D(x,radius,bias,alpha,beta){let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,radius,bias,alpha,beta):new LRNProgram(x.shape,radius,bias,alpha,beta);return this.compileAndRun(program,[x])}LRNGrad(dy,inputImage,outputImage,depthRadius,bias,alpha,beta){let program=new LRNGradProgram(inputImage.shape,depthRadius,bias,alpha,beta);return this.compileAndRun(program,[inputImage,outputImage,dy])}tile(x,reps){if(x.dtype==="string"){let data=this.readSync(x.dataId),decodedData=data.map(d=>util_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData);return tile8(buf,reps)}let program=new TileProgram(x.shape,reps);return this.compileAndRun(program,[x])}pad(x,paddings,constantValue){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return this.compileAndRun(program,[x])}gather(x,indices,axis){let cpuRes=this.tryRunOnCpuOrThrow([x,indices],()=>this.cpuBackend.gather(x,indices,axis));if(cpuRes)return cpuRes;let program=new GatherProgram(x.shape,indices.size,axis);return this.compileAndRun(program,[x,indices])}batchToSpaceND(x,blockShape,crops){util_exports.assert(x.rank<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod4),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod4),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length);return transpose(x.reshape(reshaped),permuted).reshape(reshapedPermuted).slice(sliceBeginCoords,sliceSize)}spaceToBatchND(x,blockShape,paddings){util_exports.assert(x.rank<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod4=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ithis.cpuBackend.prod(x,axes));if(cpuRes)return cpuRes;let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize),outputDType=sumOutType(x.dtype);return this.reduce(a2D,"prod",outputDType).reshape(outShape)}unsortedSegmentSum(x,segmentIds,numSegments){let axis=0,permutation=backend_util_exports.getAxesPermutation([axis],x.rank),permutedX=x;permutation!=null&&(permutedX=transpose(x,permutation),axis=backend_util_exports.getInnerMostAxes(1,x.rank)[0]);let outShape=segment_util2.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=permutedX.as2D(-1,inSize),outputDType=sumOutType(x.dtype),result=this.segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments).reshape(outShape);return permutation!=null&&(result=transpose(result,backend_util_exports.getUndoAxesPermutation(permutation))),result}segOpCompute(x,segOpType,segmentIds,dtype,numSegments){let batchSize=x.shape[0],inSize=x.shape[1],windowSize=segment_util2.segOpComputeOptimalWindowSize(inSize,numSegments),segOpInfo={windowSize,inSize,batchSize,numSegments},program=new SegmentOpProgram(segOpInfo,segOpType),output=this.compileAndRun(program,[x,segmentIds],dtype);return output.shape[1]===numSegments?output:(segmentIds=range(0,numSegments).tile([inSize/windowSize]),this.segOpCompute(output,segOpType,segmentIds,dtype,numSegments))}argMinMaxReduce(x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.rank),!env().getBool("WEBGL_PACK_REDUCE")||x.rank<=2){let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.argReduce(a2D,reduceType).reshape(outShape)}return this.argReducePacked(x,reduceType)}argMin(x,axis){return this.argMinMaxReduce(x,axis,"min")}argMax(x,axis){return this.argMinMaxReduce(x,axis,"max")}cumsum(x,axis,exclusive,reverse11){if(axis!==x.rank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.rank-1} but got axis=${axis}`);let size=x.shape[axis],result=x;for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(x.shape,!1,reverse11),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=this.compileAndRun(program,[result],result.dtype,customSetup),prevResult.dispose()}if(exclusive){let program=new CumSumProgram(x.shape,exclusive,reverse11),prevResult=result;result=this.compileAndRun(program,[result]),prevResult.dispose()}return result}equal(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,EQUAL2,"bool");let program=new BinaryOpProgram(EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}less(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.less(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS2,"bool");let program=new BinaryOpProgram(LESS,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}lessEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LESS_EQUAL2,"bool");let program=new BinaryOpProgram(LESS_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greater(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.greater(a,b));if(cpuRes)return cpuRes;if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER2,"bool");let program=new BinaryOpProgram(GREATER,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}greaterEqual(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,GREATER_EQUAL2,"bool");let program=new BinaryOpProgram(GREATER_EQUAL,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalNot(x){let program=new UnaryOpProgram(x.shape,LOGICAL_NOT);return this.compileAndRun(program,[x])}logicalAnd(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_AND2,"bool");let program=new BinaryOpProgram(LOGICAL_AND,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}logicalOr(a,b){if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,LOGICAL_OR2,"bool");let program=new BinaryOpProgram(LOGICAL_OR,a.shape,b.shape);return this.compileAndRun(program,[a,b],"bool")}select(condition,a,b){let program=new SelectProgram(condition.rank,a.shape,a.rank);return this.compileAndRun(program,[condition,a,b],upcastType(a.dtype,b.dtype))}where(condition){backend_util_exports.warn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");let condVals=condition.dataSync();return whereImpl3(condition.shape,condVals)}topk(x,k,sorted){let xVals=x.dataSync();return topkImpl3(xVals,x.shape,x.dtype,k,sorted)}min(x,axes){backend_util_exports.assertAxesAreInnerMostDims("min",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"min",a2D.dtype).reshape(outShape)}minimum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.minimum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MIN2,a.shape,b.shape):new BinaryOpProgram(MIN,a.shape,b.shape);return this.compileAndRun(program,[a,b])}mod(a,b){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MOD2,a.shape,b.shape):new BinaryOpProgram(MOD,a.shape,b.shape);return this.compileAndRun(program,[a,b])}maximum(a,b){let cpuRes=this.tryRunOnCpuOrThrow([a,b],()=>this.cpuBackend.maximum(a,b));if(cpuRes)return cpuRes;let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(MAX2,a.shape,b.shape):new BinaryOpProgram(MAX,a.shape,b.shape);return this.compileAndRun(program,[a,b])}all(x,axes){backend_util_exports.assertAxesAreInnerMostDims("all",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"all",a2D.dtype).reshape(outShape)}any(x,axes){backend_util_exports.assertAxesAreInnerMostDims("any",axes,x.rank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=x.as2D(-1,inSize);return this.reduce(a2D,"any",a2D.dtype).reshape(outShape)}floorDiv(a,b){let op2=INT_DIV,outputDtype="int32";if(env().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(a,b,INT_DIV2,outputDtype);let program=new BinaryOpProgram(op2,a.shape,b.shape);return this.compileAndRun(program,[a,b],outputDtype)}packedUnaryOp(x,op2,dtype){let program=new UnaryOpPackedProgram(x.shape,op2);return this.compileAndRun(program,[x],dtype)}packedBinaryOp(a,b,op2,dtype,checkOutOfBounds=!1){let program=new BinaryOpPackedProgram(op2,a.shape,b.shape,checkOutOfBounds);return this.compileAndRun(program,[a,b],dtype)}makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}addN(tensors){if(tensors.length===1)return tensors[0];if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=this.addN(tensors.slice(0,midIndex)),rightSide=this.addN(tensors.slice(midIndex));return this.addN([leftSide,rightSide])}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),usePackedOp=env().getBool("WEBGL_PACK"),program=usePackedOp?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return this.compileAndRun(program,tensors,dtype)}pow(a,b){let usePackedOp=env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),program=usePackedOp?new BinaryOpPackedProgram(POW2,a.shape,b.shape):new BinaryOpProgram(POW,a.shape,b.shape),dtype=upcastType(a.dtype,b.dtype);return this.compileAndRun(program,[a,b],dtype)}ceil(x){if(this.shouldExecuteOnCPU([x])){let outValues=ceilImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,CEIL,x.dtype);let program=new UnaryOpProgram(x.shape,CEIL);return this.compileAndRun(program,[x])}floor(x){if(this.shouldExecuteOnCPU([x])){let outValues=floorImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,FLOOR,x.dtype);let program=new UnaryOpProgram(x.shape,FLOOR);return this.compileAndRun(program,[x])}sign(x){let program=new UnaryOpProgram(x.shape,SIGN);return this.compileAndRun(program,[x])}isNaN(x){let program=new UnaryOpProgram(x.shape,IS_NAN);return this.compileAndRun(program,[x],"bool")}isInf(x){let program=new UnaryOpProgram(x.shape,IS_INF);return this.compileAndRun(program,[x],"bool")}isFinite(x){let program=new UnaryOpProgram(x.shape,IS_FINITE);return this.compileAndRun(program,[x],"bool")}round(x){let program=new UnaryOpProgram(x.shape,ROUND);return this.compileAndRun(program,[x])}exp(x){if(this.shouldExecuteOnCPU([x])){let outValues=expImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXP,x.dtype);let program=new UnaryOpProgram(x.shape,EXP);return this.compileAndRun(program,[x])}expm1(x){if(this.shouldExecuteOnCPU([x])){let outValues=expm1ImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,EXPM1,x.dtype);let program=new UnaryOpProgram(x.shape,EXPM1);return this.compileAndRun(program,[x])}softmax(logits,dim){let axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max(logits,axes),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),a=sub(logits,maxLogit.reshape(expandedShape)),b=this.exp(a),sumExp=this.sum(b,axes).reshape(expandedShape);return div(b,sumExp)}log(x){if(this.shouldExecuteOnCPU([x])){let outValues=logImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,LOG2,x.dtype);let program=new UnaryOpProgram(x.shape,LOG);return this.compileAndRun(program,[x])}log1p(x){let program=new UnaryOpProgram(x.shape,LOG1P);return this.compileAndRun(program,[x])}sqrt(x){let program=new UnaryOpProgram(x.shape,SQRT);return this.compileAndRun(program,[x])}rsqrt(x){if(this.shouldExecuteOnCPU([x])){let outValues=rsqrtImplCPU(this.texData.get(x.dataId).values,x.dtype);return this.makeOutput(x.shape,x.dtype,outValues)}let program=new UnaryOpProgram(x.shape,RSQRT);return this.compileAndRun(program,[x])}reciprocal(x){let program=new UnaryOpProgram(x.shape,RECIPROCAL);return this.compileAndRun(program,[x])}relu(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU2):program=new UnaryOpProgram(x.shape,RELU),this.compileAndRun(program,[x])}relu6(x){let program;return env().getBool("WEBGL_PACK")?program=new UnaryOpPackedProgram(x.shape,RELU62):program=new UnaryOpProgram(x.shape,RELU6),this.compileAndRun(program,[x])}prelu(x,alpha){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU2,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return this.compileAndRun(program,[x,alpha])}elu(x){if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ELU2,x.dtype);let program=new UnaryOpProgram(x.shape,ELU);return this.compileAndRun(program,[x])}eluDer(dy,y){let program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER2,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return this.compileAndRun(program,[dy,y])}selu(x){let program=new UnaryOpProgram(x.shape,SELU);return this.compileAndRun(program,[x])}clip(x,min7,max9){let program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(min7,max9);return this.compileAndRun(program,[x],null,customSetup)}abs(x){if(this.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let outValues=simpleAbsImplCPU(this.texData.get(x.dataId).values);return this.makeOutput(x.shape,x.dtype,outValues)}if(env().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(x,ABS,x.dtype);let program=new UnaryOpProgram(x.shape,ABS);return this.compileAndRun(program,[x])}complexAbs(x){let xData=this.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),inputs=[this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),this.makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return this.compileAndRun(program,inputs)}sigmoid(x){let program=new UnaryOpProgram(x.shape,SIGMOID);return this.compileAndRun(program,[x])}softplus(x){let program=new UnaryOpProgram(x.shape,SOFTPLUS);return this.compileAndRun(program,[x])}asin(x){let program=new UnaryOpProgram(x.shape,ASIN);return this.compileAndRun(program,[x])}acos(x){let program=new UnaryOpProgram(x.shape,ACOS);return this.compileAndRun(program,[x])}atan(x){let program=new UnaryOpProgram(x.shape,ATAN);return this.compileAndRun(program,[x])}sinh(x){let program=new UnaryOpProgram(x.shape,SINH);return this.compileAndRun(program,[x])}cosh(x){let program=new UnaryOpProgram(x.shape,COSH);return this.compileAndRun(program,[x])}tanh(x){let program=new UnaryOpProgram(x.shape,TANH);return this.compileAndRun(program,[x])}asinh(x){let program=new UnaryOpProgram(x.shape,ASINH);return this.compileAndRun(program,[x])}acosh(x){let program=new UnaryOpProgram(x.shape,ACOSH);return this.compileAndRun(program,[x])}atanh(x){let program=new UnaryOpProgram(x.shape,ATANH);return this.compileAndRun(program,[x])}erf(x){let program=new UnaryOpProgram(x.shape,ERF);return this.compileAndRun(program,[x])}step(x,alpha){let program=new UnaryOpProgram(x.shape,STEP(alpha));return this.compileAndRun(program,[x])}conv2dByMatMul(x,filter,convInfo,bias,activation2,preluActivationWeights){let xShape=x.shape,xTexData=this.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!==0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape2=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped2=reshape(x,[1,targetShape2,convInfo.inChannels]),filterReshaped2=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),result=this.fusedBatchMatMul({a:xReshaped2,b:filterReshaped2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights});return reshape(result,convInfo.outShape)}let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape(filter,[1,convInfo.inChannels,convInfo.outChannels]),pointwiseConv=this.fusedBatchMatMul({a:xReshaped,b:filterReshaped,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}),pointwiseConvTexData=this.texData.get(pointwiseConv.dataId);return util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,engine15().makeTensorFromDataId(pointwiseConv.dataId,convInfo.outShape,pointwiseConv.dtype)}conv2dWithIm2Row(x,filter,convInfo,bias,activation2,preluActivationWeights){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,xSqueezed=x.squeeze([0]),w2Row=filter.reshape([1,sharedDim,-1]),im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=this.compileAndRun(im2ColProgram,[xSqueezed]).reshape([1,x2ColShape[0],x2ColShape[1]]),hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2Col.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[im2Col,w2Row];bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let product=this.compileAndRun(matmulProgram,inputs);return isChannelsLast?product.reshape([1,outHeight,outWidth,convInfo.outChannels]):product.reshape([1,convInfo.outChannels,outHeight,outWidth])}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(input2,filter,convInfo,bias,activation2,preluActivationWeights);if(env().getBool("WEBGL_CONV_IM2COL")&&input2.shape[0]===1)return this.conv2dWithIm2Row(input2,filter,convInfo,bias,activation2,preluActivationWeights);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),inputs=[input2,filter];return bias&&inputs.push(bias),preluActivationWeights&&inputs.push(preluActivationWeights),this.compileAndRun(program,inputs)}conv2d(x,filter,convInfo){if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))return this.conv2dByMatMul(x,filter,convInfo);if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)return this.conv2dWithIm2Row(x,filter,convInfo);let program=new Conv2DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv2dDerInput(dy,filter,convInfo){let program=new Conv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv2dDerFilter(x,dy,convInfo){let program=new Conv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){let shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,inputs=[input2,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null;hasBias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights);let program;return shouldPackDepthwiseConv?(program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs)):(program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights),this.compileAndRun(program,inputs))}depthwiseConv2D(x,filter,convInfo){let program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels===1?(program=new DepthwiseConvPacked2DProgram(convInfo),this.compileAndRun(program,[x,filter])):(program=new DepthwiseConv2DProgram(convInfo),this.compileAndRun(program,[x,filter]))}depthwiseConv2DDerInput(dy,filter,convInfo){let program=new DepthwiseConv2DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}depthwiseConv2DDerFilter(x,dy,convInfo){let program=new DepthwiseConv2DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}conv3d(x,filter,convInfo){let program=new Conv3DProgram(convInfo);return this.compileAndRun(program,[x,filter])}conv3dDerInput(dy,filter,convInfo){let program=new Conv3DDerInputProgram(convInfo);return this.compileAndRun(program,[dy,filter])}conv3dDerFilter(x,dy,convInfo){let program=new Conv3DDerFilterProgram(convInfo);return this.compileAndRun(program,[x,dy])}unstack(x,axis){let num=x.shape[axis],outShape=new Array(x.rank-1),outIndex=0;for(let i=0;i1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return this.compileAndRun(program,[x])}split(x,sizeSplits,axis){return split9(x,sizeSplits,axis)}scatterND(indices,updates,shape){let{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize],flattenIndices=indices.reshape([numUpdates,sliceRank]),flattenX=updates.reshape([numUpdates,sliceSize]);if(outputSize===0)return backend_util_exports.reshapeTensor(tensor4([]),shape);let defaultValue=scalar(0),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.rank,flattenX.rank,strides,flattenShape),res=this.compileAndRun(program,[flattenX,flattenIndices,defaultValue]);return res.reshape(shape)}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){let{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.rank,sparseValues.rank,strides,[outputSize,1],sumDupeIndices),res=this.compileAndRun(program,[sparseValues,sparseIndices,defaultValue]);return res.reshape(outputShape)}gatherND(x,indices){let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(x,indices),flattenIndices=indices.reshape([numSlices,sliceRank]),flattenX=x.reshape([x.size/sliceSize,sliceSize]),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=this.compileAndRun(program,[flattenX,flattenIndices]);return res.reshape(resultShape)}fill(shape,value,dtype){if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),engine15().makeTensor(values,shape,dtype,this)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return this.compileAndRun(program,[],dtype,customSetup)}}onesLike(x){if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(x.shape,1,x.dtype)}zerosLike(x){return this.fill(x.shape,x.dtype==="string"?"":0,x.dtype)}linspace(start,stop,num){return backend_util_exports.linspaceImpl(start,stop,num)}makeTensorInfo(shape,dtype,values){let dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine15().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!==!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine15().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){if(this.disposed)return;if(!env().getBool("IS_TEST")){let allKeys=Object.keys(this.binaryCache);allKeys.forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]})}this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}tryRunOnCpuOrThrow(inputs,fn){if(this.shouldExecuteOnCPU(inputs))try{return fn()}catch(e){if(env().getBool("IS_TEST"))throw new Error("CPU forwarding failed")}return null}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var webgl2={forceHalfFloat};function identity2(args){let{inputs,backend:backend3}=args,{x}=inputs;return backend3.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity2};function complex9(args){let{inputs,backend:backend3}=args,{real:real7,imag:imag7}=inputs,complexInfo=backend3.makeTensorInfo(real7.shape,"complex64"),complex10=backend3.texData.get(complexInfo.dataId),realTensorInfo=identity2({inputs:{x:real7},backend:backend3}),realData=backend3.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity2({inputs:{x:imag7},backend:backend3}),imagData=backend3.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex10.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex9};var CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` if (isnan(a)) return a; if (isnan(b)) return b; `,CHECK_NAN_SNIPPET_BINARY_PACKED=` @@ -3552,14 +3552,14 @@ return (round(mod(b, 2.0)) != 1) ? result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real8,imag8]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex10({inputs:{real:real8,imag:imag8},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real8),webglBackend.disposeIntermediateTensorInfo(imag8),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc};var ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`;function unaryKernelFunc2(opSnippet){return({inputs,backend:backend3})=>{let{x}=inputs,webglBackend=backend3,program=new UnaryOpProgram(x.shape,opSnippet);return webglBackend.runWebGLProgram(program,[x],x.dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend3})=>{let{a,b}=inputs,webglBackend=backend3;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real7,imag7]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex9({inputs:{real:real7,imag:imag7},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real7),webglBackend.disposeIntermediateTensorInfo(imag7),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc};var ATAN2=CHECK_NAN_SNIPPET_BINARY+` return atan(a, b); `,ATAN2_PACKED=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+CHECK_NAN_SNIPPET_BINARY_PACKED+` return result; -`,atan25=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan25};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad11}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3};var BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` +`,atan24=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config={kernelName:Atan2,backendName:"webgl",kernelFunc:atan24};function avgPool3(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend3.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolBackprop");let{filterSize,strides,pad:pad10}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend3.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolBackpropConfig2={kernelName:AvgPoolBackprop,backendName:"webgl",kernelFunc:avgPoolBackprop3};var BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -3582,7 +3582,7 @@ return (round(mod(b, 2.0)) != 1) ? setOutput((x - mean) * inv + offset); } - `}};var batchNorm3=({inputs,backend:backend3,attrs})=>{let{x,mean:mean7,variance,offset,scale:scale2}=inputs;util_exports.assert(mean7.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean7.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean7.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean7,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean7.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3};var NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real7};var TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast49(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast49({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex10({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real7({inputs:{input:x},backend:backend3}),result=cast49({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast49};var ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i{let{x,mean:mean6,variance,offset,scale:scale2}=inputs;util_exports.assert(mean6.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean6.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean6.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean6,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean6.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon),output=backend3.runWebGLProgram(program,finalInputs,finalInputs[0].dtype);return output},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3};var NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.real},backend:backend3})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real6};var TO_INT="return float(int(x));";function int(input2,backend3){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend3.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast48(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend3});let zerosTensor=zeros(x.shape),floatX=cast48({inputs:{x},backend:backend3,attrs:{dtype:"float32"}}),result=complex9({inputs:{real:floatX,imag:zerosTensor},backend:backend3});return zerosTensor.dispose(),backend3.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real6({inputs:{input:x},backend:backend3}),result=cast48({inputs:{x:realPart},backend:backend3,attrs:{dtype}});return backend3.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend3});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend3);if(dtype==="bool"){let zerosTensorInfo=backend3.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),binaryInputs={a:x,b:zerosTensorInfo},result=notEqual3({inputs:binaryInputs,backend:backend3});return backend3.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast48};var ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;iidx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag7};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape89(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape89};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real7({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag7({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex10({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape89({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape89({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat18(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat18};var COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel),res=channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c);return res.join()}function imag6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs,inputData=backend3.texData.get(input2.dataId);return identity2({inputs:{x:inputData.complexTensorInfos.imag},backend:backend3})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag6};function packedReshape(input2,afterShape,backend3){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=backend3.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}function reshape88(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{shape}=attrs,webglBackend=backend3,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape88};function concatImpl(inputs,axis,backend3){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real6({inputs:{input:t},backend:backend3})),imags=inputs.map(t=>imag6({inputs:{input:t},backend:backend3})),realConcated=concatImpl(reals,axis,backend3),imagConcated=concatImpl(imags,axis,backend3),result2=complex9({inputs:{real:realConcated,imag:imagConcated},backend:backend3});return reals.forEach(r=>backend3.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend3.disposeIntermediateTensorInfo(i)),backend3.disposeIntermediateTensorInfo(realConcated),backend3.disposeIntermediateTensorInfo(imagConcated),result2}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl(inputs.slice(0,midIndex),axis,backend3),rightSide=concatImpl(inputs.slice(midIndex),axis,backend3),result2=concatImpl([leftSide,rightSide],axis,backend3);return backend3.disposeIntermediateTensorInfo(leftSide),backend3.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend3.runWebGLProgram(program2,inputs,dtype)}let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),tensors2D=inputs.map(x=>reshape88({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend3})),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend3.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend3.disposeIntermediateTensorInfo(r));let reshapedResult=reshape88({inputs:{x:result},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(result),reshapedResult}function concat17(args){let{inputs,backend:backend3,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend3.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl($inputs,$axis,backend3)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat17};var COS=CHECK_NAN_SNIPPET_UNARY+` return cos(x); -`,cos7=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos7};var DIV=` +`,cos6=unaryKernelFunc2(COS),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos6};var DIV=` if (a == b) { return 1.0; }; @@ -3652,7 +3652,7 @@ return a / b;`,DIV_PACKED=` } return result; -`,div36=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div36};var FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` +`,div35=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),divConfig2={kernelName:Div,backendName:"webgl",kernelFunc:div35};var FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` const float exponentMultiplier = ${exponentMultiplierSnippet}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -3685,7 +3685,7 @@ return a / b;`,DIV_PACKED=` ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape89({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape89({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft7};var FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}};function fftImpl2(x,inverse,backend3){let xData=backend3.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape88({inputs:{x},backend:backend3,attrs:{shape:[batch,innerDimensionSize]}}),xShape=input2D.shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend3.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape88({inputs:{x:complexOutput},backend:backend3,attrs:{shape:x.shape}});return backend3.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend3)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft6};var FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -3755,7 +3755,7 @@ return a / b;`,DIV_PACKED=` ${glsl.output} = result; } - `}};var fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft7(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft7};var MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` + `}};var fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend3,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend3.makeTensorInfo(texShape,"int32");backend3.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend3.gpgpu.uploadPixelDataToTexture(backend3.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend3.runWebGLProgram(program,[tempPixelHandle],"int32");return backend3.disposeData(tempPixelHandle.dataId),res}function ifft6(args){let{inputs,backend:backend3}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend3)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft6};var MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` if (inIdx < 0 || inIdx >= ${inSize}) { return 0.0; } @@ -3808,7 +3808,7 @@ return a / b;`,DIV_PACKED=` } setOutput(sumValue); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend3){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad11,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad11),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape89({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape89({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` + `}};function transposeImpl2(x,perm,backend3){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TransposePackedProgram(x.shape,perm):new TransposeProgram(x.shape,perm);return backend3.runWebGLProgram(program,[x],x.dtype)}var maxConfig2={kernelName:Max,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{reductionIndices,keepDims}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(maxInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;i`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity2({inputs:{x},backend:backend3});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend3.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPoolBackprop3(args){let{inputs,backend:backend3,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolBackprop");let{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend3.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend3.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend3.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolBackpropConfig2={kernelName:MaxPoolBackprop,backendName:"webgl",kernelFunc:maxPoolBackprop3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend3){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend3.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend3.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{filterSize,strides,pad:pad10,includeBatchInIndex}=attrs,webglBackend=backend3;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad10),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend3){let inSize=util_exports.sizeFromShape(reduceShape),xSize=util_exports.sizeFromShape(x.shape),batchSize=xSize/inSize,reshapedInput=reshape88({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend3}),reduced=reduce(reshapedInput,"float32","mean",backend3),reshapedOutput=reshape88({inputs:{x:reduced},attrs:{shape:outShape},backend:backend3});return backend3.disposeIntermediateTensorInfo(reshapedInput),backend3.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend3,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let xTexData=webglBackend.texData.get(meanInput.dataId),values=xTexData.values,newShape=new Array(xRank);for(let i=0;ip2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` int start = ${start}; int end = ${end}; @@ -3928,7 +3928,7 @@ return a / b;`,DIV_PACKED=` float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}};var MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex10({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2};var nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}};var nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}};var nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};var RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` + `}};var MUL="return a * b;";function multiply2(args){let{inputs,backend:backend3}=args,{a,b}=inputs,dtype=backend_util_exports.upcastType(a.dtype,b.dtype);if(a.dtype==="complex64"){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),realProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.REAL,a.shape,b.shape),imagProgram=new BinaryOpComplexProgram(COMPLEX_MULTIPLY.IMAG,a.shape,b.shape),inputs2=[{dataId:aData.complexTensorInfos.real.dataId,dtype:aData.complexTensorInfos.real.dtype,shape:a.shape},{dataId:aData.complexTensorInfos.imag.dataId,dtype:aData.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:bData.complexTensorInfos.real.dataId,dtype:bData.complexTensorInfos.real.dtype,shape:b.shape},{dataId:bData.complexTensorInfos.imag.dataId,dtype:bData.complexTensorInfos.imag.dtype,shape:b.shape}],realPart=backend3.runWebGLProgram(realProgram,inputs2,"float32"),imagPart=backend3.runWebGLProgram(imagProgram,inputs2,"float32"),complexOutput=complex9({inputs:{real:realPart,imag:imagPart},backend:backend3});return backend3.disposeIntermediateTensorInfo(realPart),backend3.disposeIntermediateTensorInfo(imagPart),complexOutput}if(backend3.shouldExecuteOnCPU([a,b])){let aData=backend3.texData.get(a.dataId),bData=backend3.texData.get(b.dataId),[outValues,outShape]=multiplyImplCPU(a.shape,b.shape,aData.values,bData.values,dtype),out=backend3.makeTensorInfo(outShape,dtype),outData=backend3.texData.get(out.dataId);return outData.values=outValues,out}let program;return env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?program=new BinaryOpPackedProgram(MUL,a.shape,b.shape):program=new BinaryOpProgram(MUL,a.shape,b.shape),backend3.runWebGLProgram(program,[a,b],dtype)}var multiplyConfig2={kernelName:Multiply,backendName:"webgl",kernelFunc:multiply2};var nonMaxSuppressionV3Config={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold;return kernel_impls_exports.nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal)}};var nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl,nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[selectedIndices,validOutputs]}};var nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl,nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:({inputs,backend:backend3,attrs})=>{backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,gpuBackend=backend3,boxesVals=gpuBackend.readSync(boxes.dataId),scoresVals=gpuBackend.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[selectedIndices,selectedScores]}};var RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` vec3 fill = vec3(${fillValue.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { @@ -3947,19 +3947,19 @@ return a / b;`,DIV_PACKED=` } `}};var rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend3,program=new RotateProgram(image3.shape,radians,fillValue,center),output=webglBackend.runWebGLProgram(program,[image3],image3.dtype);return output}};var SIN=CHECK_NAN_SNIPPET_UNARY+` return sin(x); -`,sin6=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin6};var SQUARE="return x * x;",square24=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square24};var SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3};var SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc};var TAN="return tan(x);",tan5=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan5};var transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast);var wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3};var wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape90};var wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape90({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape90({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast50(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast50};var wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat19(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse12?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum6};var wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2};var wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad11,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad11,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3};var supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2);var supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool");var expConfig2=createUnaryKernelConfig(Exp);function fill6(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill6};var wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13};var supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4);var wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean7,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean7.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm};var wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d};var wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad11,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad11,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d};var wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd};var wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2};var supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool");var supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool");var supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool");var supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool");var logConfig2=createUnaryKernelConfig(Log);var supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool");var wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max8(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max8};var supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10);var wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad11,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad11,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4};var wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min6(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min6};var supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11);var supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12);var negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc};var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4};var wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2};var supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool");var wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2};var wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad10(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad10,setupFunc:setup26};var supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14);var wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu7(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu7};var reluConfig2=createUnaryKernelConfig(Relu);var relu6Config2=createUnaryKernelConfig(Relu6);var wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast50({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2};var wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse11(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape90({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse11,setupFunc:setup29};var wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30};var rsqrtConfig2=createUnaryKernelConfig(Rsqrt);var wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd};var wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32};var wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid8(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid8};var sinConfig3=createUnaryKernelConfig(Sin);function slice20(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d3(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d3(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d3(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d3(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice20};var wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax4(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax4};function split11(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice20({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split11};var sqrtConfig2=createUnaryKernelConfig(Sqrt);var squareConfig3=createUnaryKernelConfig(Square);var supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15);var wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape90({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice20({inputs:{x},attrs:{begin,size},backend:backend3});return reshape90({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape90({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2};var supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16);var wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum28(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum28};var tanhConfig2=createUnaryKernelConfig(Tanh);var wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2};var kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule(require_tfjs_backend_wasm());var WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer11=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer11,memoryOffset,size);case"int32":return new Int32Array(buffer11,memoryOffset,size);case"bool":return new Uint8Array(buffer11,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer11,dtype){switch(dtype){case"float32":return new Float32Array(buffer11);case"int32":return new Int32Array(buffer11);case"bool":return new Uint8Array(buffer11);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version11="2.7.0";var exports_constraints_exports={};__export(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config){if(config==null||typeof config!="object")return;if(Array.isArray(config))config.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config);for(let field of fields){let value=config[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: +`,sin5=unaryKernelFunc2(SIN),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin5};var SQUARE="return x * x;",square23=unaryKernelFunc2(SQUARE),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square23};var SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3};var SUB="return a - b;",subKernelFunc=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:subKernelFunc};var TAN="return tan(x);",tan4=unaryKernelFunc2(TAN),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan4};var transposeConfig2={kernelName:Transpose,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend3})=>{let{x}=inputs,{perm}=attrs,webglBackend=backend3,xRank=x.shape.length,newShape=new Array(xRank);for(let i=0;iwasmFunc8(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast);var wasmFunc;function setupFunc(backend3){wasmFunc=backend3.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend3}=args,out=backend3.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend3.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity3(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity3};var wasmTranspose;function setup2(backend3){wasmTranspose=backend3.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose19(args){let{inputs,backend:backend3,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose19,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend3){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape89};var wasmBatchMatMul;function setup5(backend3){wasmBatchMatMul=backend3.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul2(args){let{inputs,backend:backend3,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShapeOuterDims=batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2),outShape=outShapeOuterDims.concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape89({inputs:{x:a},backend:backend3,attrs:{shape:a3dShape}}),b3d=reshape89({inputs:{x:b},backend:backend3,attrs:{shape:b3dShape}}),a3dId=backend3.dataIdMap.get(a3d.dataId).id,b3dId=backend3.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend3.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend3.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul2};function cast49(args){let{inputs:{x},attrs:{dtype},backend:backend3}=args,out=backend3.makeOutput(x.shape,dtype),inVals=backend3.typedArrayFromHeap(x),outVals=backend3.typedArrayFromHeap(out);return outVals.set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast49};var wasmClip;function setup6(backend3){wasmClip=backend3.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat18(args){let{inputs,backend:backend3}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),out=backend3.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return $inputs[0];let shapes=$inputs.map(t=>t.shape);backend_util_exports.assertParamsConsistent(shapes,axis);let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend3.typedArrayFromHeap(input2)),outVals=backend3.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose19({inputs:{x},attrs:{perm:permutation},backend:backend3}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend3.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend3.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend3.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse11?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose19({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend3}),backend3.disposeData(permutedX.dataId),backend3.disposeData(permutedOut.dataId)}return out}var cumsumConfig={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum5};var wasmDepthToSpace;function setup11(backend3){wasmDepthToSpace=backend3.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend3.makeOutput(outputShape,"float32"),xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id,channelsLast=dataFormat==="NHWC"?1:0;return wasmDepthToSpace(xId,blockSize,channelsLast,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace2};var wasmDepthwiseConv2d;function setup12(backend3){wasmDepthwiseConv2d=backend3.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d3(args){let{inputs,attrs,backend:backend3}=args,{x,filter}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad10,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad10,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d3};var supportsFullBroadcast2=!0,divConfig3=createBinaryKernelConfig(Div,supportsFullBroadcast2);var supportsFullBroadcast3=!1,equalConfig=createBinaryKernelConfig(Equal,supportsFullBroadcast3,"bool");var expConfig2=createUnaryKernelConfig(Exp);function fill5(args){let{attrs:{shape,value,dtype},backend:backend3}=args,out=backend3.makeOutput(shape,dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(value),out}var fillConfig2={kernelName:Fill,backendName:"wasm",kernelFunc:fill5};var wasmFlipLeftRight;function setup13(backend3){wasmFlipLeftRight=backend3.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend3}=args,{image:image3}=inputs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13};var supportsFullBroadcast4=!1,floorDivConfig=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast4);var wasmBatchNorm;function setup14(backend3){wasmBatchNorm=backend3.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend3,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean6,variance,offset,scale:scale2}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,meanId=backend3.dataIdMap.get(mean6.dataId).id,varianceId=backend3.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend3.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend3.dataIdMap.get(scale2.dataId).id:0,out=backend3.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm};var wasmFusedConv2d;function setup15(backend3){wasmFusedConv2d=backend3.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d};var wasmFusedDepthwiseConv2d;function setup16(backend3){wasmFusedDepthwiseConv2d=backend3.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend3}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad10,dilations,dataFormat,dimRoundingMode,activation:activation2}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad10,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend3.dataIdMap.get(x.dataId).id,filterId=backend3.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend3.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend3.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,outId),out}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d};var wasmGatherNd;function setup17(backend3){wasmGatherNd=backend3.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd(args){let{backend:backend3,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend3.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xData=backend3.dataIdMap.get(params.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd};var wasmGather;function setup18(backend3){wasmGather=backend3.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV2(args){let{backend:backend3,inputs,attrs}=args,{x,indices}=inputs,{axis}=attrs,newShape=x.shape.slice();newShape[axis]=util_exports.sizeFromShape(indices.shape);let stridesSize=x.shape.length-1,out=backend3.makeOutput(newShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let xData=backend3.dataIdMap.get(x.dataId),xId=xData.id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,outId=backend3.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(newShape)).buffer);wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,axis,outStridesBytes,outId);let parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis);return out.shape=shapeInfo.outputShape,out}var gatherV2Config={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV2};var supportsFullBroadcast5=!1,greaterConfig=createBinaryKernelConfig(Greater,supportsFullBroadcast5,"bool");var supportsFullBroadcast6=!1,greaterEqualConfig=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast6,"bool");var supportsFullBroadcast7=!1,lessConfig=createBinaryKernelConfig(Less,supportsFullBroadcast7,"bool");var supportsFullBroadcast8=!1,lessEqualConfig=createBinaryKernelConfig(LessEqual,supportsFullBroadcast8,"bool");var logConfig2=createUnaryKernelConfig(Log);var supportsFullBroadcast9=!1,logicalAndConfig=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast9,"bool");var wasmMax;function setup19(backend3){wasmMax=backend3.wasm.cwrap(Max,null,["number, number, number"])}function max7(args){let{backend:backend3,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max7};var supportsFullBroadcast10=!1,maximumConfig=createBinaryKernelConfig(Maximum,supportsFullBroadcast10);var wasmMaxPool;function setup20(backend3){wasmMaxPool=backend3.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend3}=args,x=inputs.x,xId=backend3.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad10,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad10,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend3.makeOutput(convInfo.outShape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4};var wasmMin;function setup21(backend3){wasmMin=backend3.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3);if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig={kernelName:Min,backendName:"wasm",setupFunc:setup21,kernelFunc:min5};var supportsFullBroadcast11=!1,minimumConfig=createBinaryKernelConfig(Minimum,supportsFullBroadcast11);var supportsFullBroadcast12=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast12);var negateConfig=createUnaryKernelConfig(Negate);function parseResultStruct(backend3,resOffset){let result=new Int32Array(backend3.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend3.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc3;function setup22(backend3){wasmFunc3=backend3.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc3(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores),backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices);return selectedIndicesTensor}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup22,kernelFunc};var wasmFunc4;function setup23(backend3){wasmFunc4=backend3.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV4(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pSelectedScores);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend3.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup23,kernelFunc:nonMaxSuppressionV4};var wasmFunc5;function setup24(backend3){wasmFunc5=backend3.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend3,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend3.dataIdMap.get(boxes.dataId).id,scoresId=backend3.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend3,resOffset);backend3.wasm._free(pValidOutputs);let selectedIndicesTensor=backend3.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend3.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup24,kernelFunc:kernelFunc2};var supportsFullBroadcast13=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast13,"bool");var wasmOneHot;function setup25(backend3){wasmOneHot=backend3.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot2(args){let{inputs,backend:backend3,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend3.makeOutput([...indices.shape,depth],"int32"),outId=backend3.dataIdMap.get(out.dataId).id,indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig={kernelName:OneHot,backendName:"wasm",setupFunc:setup25,kernelFunc:oneHot2};function onesLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(1),out}var onesLikeConfig={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike2};var wasmPadV2;function setup26(backend3){wasmPadV2=backend3.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad9(args){let{inputs:{x},backend:backend3,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(outShape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config2={kernelName:PadV2,backendName:"wasm",kernelFunc:pad9,setupFunc:setup26};var supportsFullBroadcast14=!1,powConfig=createBinaryKernelConfig(Pow,supportsFullBroadcast14);var wasmPrelu;function setup27(backend3){wasmPrelu=backend3.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu6(args){let{inputs,backend:backend3}=args,{x,alpha}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,weightsId=backend3.dataIdMap.get(alpha.dataId).id,out=backend3.makeOutput(x.shape,"float32"),outId=backend3.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig2={kernelName:Prelu,backendName:"wasm",setupFunc:setup27,kernelFunc:prelu6};var reluConfig2=createUnaryKernelConfig(Relu);var relu6Config2=createUnaryKernelConfig(Relu6);var wasmResizeBilinear;function setup28(backend3){wasmResizeBilinear=backend3.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])}function resizeBilinear2(args){let{backend:backend3,inputs,attrs}=args,{images}=inputs,{alignCorners,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend3.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast49({backend:backend3,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend3.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend3.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend3.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,outId),castedData!=null&&backend3.disposeData(castedData.dataId),out}var resizeBilinearConfig={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup28,kernelFunc:resizeBilinear2};var wasmReverse;function setup29(backend3){wasmReverse=backend3.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse10(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity3({inputs:{x},backend:backend3});let out=backend3.makeOutput(x.shape,x.dtype),xId=backend3.dataIdMap.get(x.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape89({inputs:{x:out},attrs:{shape:x.shape},backend:backend3})}var reverseConfig={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse10,setupFunc:setup29};var wasmRotate;function setup30(backend3){wasmRotate=backend3.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend3,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend3.makeOutput(image3.shape,image3.dtype),imageId=backend3.dataIdMap.get(image3.dataId).id,outId=backend3.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup30};var rsqrtConfig2=createUnaryKernelConfig(Rsqrt);var wasmScatterNd;function setup31(backend3){wasmScatterNd=backend3.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd(args){let{backend:backend3,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend3.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesData=backend3.dataIdMap.get(indices.dataId),indicesId=indicesData.id,updatesData=backend3.dataIdMap.get(updates.dataId),updatesId=updatesData.id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend3.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup31,kernelFunc:scatterNd};var wasmSelect;function setup32(backend3){wasmSelect=backend3.wasm.cwrap(SelectV2,null,["number","number","number","number","number"])}function select(args){let{inputs,backend:backend3}=args,{condition,t,e}=inputs,conditionId=backend3.dataIdMap.get(condition.dataId).id,tId=backend3.dataIdMap.get(t.dataId).id,eId=backend3.dataIdMap.get(e.dataId).id,out=backend3.makeOutput(t.shape,t.dtype),outId=backend3.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectV2Config={kernelName:SelectV2,backendName:"wasm",kernelFunc:select,setupFunc:setup32};var wasmFunc6;function setup33(backend3){wasmFunc6=backend3.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid7(args){let{backend:backend3,inputs:{x}}=args,xId=backend3.dataIdMap.get(x.dataId).id,out=backend3.makeOutput(x.shape,x.dtype),outId=backend3.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc6(xId,outId),out}var sigmoidConfig2={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup33,kernelFunc:sigmoid7};var sinConfig3=createUnaryKernelConfig(Sin);function slice19(args){let{inputs:{x},attrs:{begin,size},backend:backend3}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend3.typedArrayFromHeap(x),out=backend3.makeOutput(size_,x.dtype),outVals=backend3.typedArrayFromHeap(out),xStrides=util_exports.computeStrides(x.shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return outVals.set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}let rank=x.shape.length;return rank===2?slice2d2(xVals,xStrides[0],outVals,begin_,size_):rank===3?slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_):rank===4?slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_):genericSliceSlow(xVals,x,outVals,begin_,size_),out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;iidx+begin[j]);outVals[i]=xBuf.get(...xLoc)}}var sliceConfig2={kernelName:Slice,backendName:"wasm",kernelFunc:slice19};var wasmFunc7;function setup34(backend3){wasmFunc7=backend3.wasm.cwrap(Softmax,null,["number","number","number","number"])}function softmax3(args){let{backend:backend3,inputs:{logits},attrs:{dim}}=args,xId=backend3.dataIdMap.get(logits.dataId).id,out=backend3.makeOutput(logits.shape,logits.dtype),outId=backend3.dataIdMap.get(out.dataId).id,channels=logits.shape[dim],batch=util_exports.sizeFromShape(logits.shape)/channels;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId,channels,batch),out}var softmaxConfig={kernelName:Softmax,backendName:"wasm",setupFunc:setup34,kernelFunc:softmax3};function split10(args){let{inputs,attrs,backend:backend3}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,axis),begin=new Array(x.shape.length).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice19({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend3});return begin[$axis]+=s,xSlice})}var splitVConfig={kernelName:SplitV,backendName:"wasm",kernelFunc:split10};var sqrtConfig2=createUnaryKernelConfig(Sqrt);var squareConfig3=createUnaryKernelConfig(Square);var supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15);var wasmStridedSlice;function setup35(backend3){wasmStridedSlice=backend3.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice2(args){let{backend:backend3,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape89({inputs:{x},attrs:{shape:newShape},backend:backend3}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1),nonStrided=strides.every(v=>v===1);if(nonStrided){let xSliced=slice19({inputs:{x},attrs:{begin,size},backend:backend3});return reshape89({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend3})}let out=backend3.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend3.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend3.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape89({inputs:{x:out},attrs:{shape:outShape},backend:backend3})}var stridedSliceConfig={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup35,kernelFunc:stridedSlice2};var supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16);var wasmSum;function setup36(backend3){wasmSum=backend3.wasm.cwrap(Sum,null,["number, number, number"])}function sum27(args){let{backend:backend3,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend3),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend3.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend3.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend3.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend3.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig={kernelName:Sum,backendName:"wasm",setupFunc:setup36,kernelFunc:sum27};var tanhConfig2=createUnaryKernelConfig(Tanh);var wasmTile;function setup37(backend3){wasmTile=backend3.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile9(args){let{inputs,backend:backend3,attrs}=args,{x}=inputs,xId=backend3.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack};function zerosLike2(args){let{inputs:{x},backend:backend3}=args,out=backend3.makeOutput(x.shape,x.dtype),outVals=backend3.typedArrayFromHeap(out);return outVals.fill(0),out}var zerosLikeConfig={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike2};var kernelConfigs3=[absConfig2,addConfig3,addNConfig,argMaxConfig,avgPoolConfig3,batchMatMulConfig2,castConfig3,clipByValueConfig,concatConfig3,conv2DConfig2,conv2DBackpropInputConfig2,cosConfig3,cropAndResizeConfig,cumsumConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig2,divConfig3,equalConfig,expConfig2,fillConfig2,flipLeftRightConfig3,floorDivConfig,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig3,lessConfig,lessEqualConfig,logConfig2,logicalAndConfig,maxConfig3,maximumConfig,maxPoolConfig3,minConfig,minimumConfig,multiplyConfig3,negateConfig,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig,onesLikeConfig,padV2Config2,powConfig,preluConfig2,reluConfig2,relu6Config2,reshapeConfig3,resizeBilinearConfig,reverseConfig,rotateWithOffsetConfig3,rsqrtConfig2,scatterNdConfig,selectV2Config,sigmoidConfig2,sinConfig3,sliceConfig2,softmaxConfig,splitVConfig,sqrtConfig2,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig,subConfig3,sumConfig,tanhConfig2,tileConfig,transposeConfig3,unpackConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var tfjs_backend_wasm_threaded_simd=__toModule(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',tfjs_backend_wasm=__toModule(require_tfjs_backend_wasm());var WASM_PRIORITY=2,BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine15())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();f();let kernelMs=util_exports.now()-start;return{kernelMs}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer10=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer10,memoryOffset,size);case"int32":return new Int32Array(buffer10,memoryOffset,size);case"bool":return new Uint8Array(buffer10,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized)return;if(initAborted)return;initAborted=!0;let rejectMsg="Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers";reject({message:rejectMsg})}})}function typedArrayFromBuffer(buffer10,dtype){switch(dtype){case"float32":return new Float32Array(buffer10);case"int32":return new Int32Array(buffer10);case"bool":return new Uint8Array(buffer10);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.7.0";var exports_constraints_exports={};__export(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon2(){return _epsilon==null&&(_epsilon=backend2().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config){if(config==null||typeof config!="object")return;if(Array.isArray(config))config.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config);for(let field of fields){let value=config[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config=identifier;if(config.className==null||config.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config)}. 'className' and 'config' must set.`);let className=config.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: 1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique7(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones8,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros9});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"];var nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile11(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile11(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean7=0,stddev=1,dtype,seed){return randomNormal(shape,mean7,stddev,dtype,seed)}function dot5(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather7(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square25(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu7(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros9(){return new Zeros}function ones8(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add32,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d5,conv2d:()=>conv2d11,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d3,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot6,dropout:()=>dropout3,elu:()=>elu8,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum9,minimum:()=>minimum7,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu8,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape91,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax5,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable3=variableAndValue[0];variable3.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor168,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex),layer.inboundNodes.length===0)return[tensor168];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log10=mul(div(1,this.seen),this.totals[key]);logs5[key]=log10,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square25(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square25(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square25(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square25(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg20=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg20,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast51(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast51(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack9=[],marks=[];for(stack9.push(fetch3);stack9.length>0;){let top=stack9[stack9.length-1];if(visited.has(top.name)){stack9.pop();continue}let topIsMarked=marks[marks.length-1]===stack9.length-1;if(top.inputs.length===0||topIsMarked)stack9.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack9.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack9.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique7(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor168,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor168.sourceLayer,nodeIndex=tensor168.nodeIndex,tensorIndex=tensor168.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor168.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version13}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather7(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range4(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor168=tensors[name];oldTensorIds.indexOf(tensor168.id)===-1&&tensorsToDispose.push(tensor168)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique7(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique7(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor168,i)=>{tensor168==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range4(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version13}`,convertedBy:null},includeOptimizer=config==null?!1:config.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer11,specs){let name2Tensor=io_exports.decodeWeights(buffer11,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(!(config[0].className!=null)||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2=void 0,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu7(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square25(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range4(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range4(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step9=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step9,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile11(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile11(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot5(mul(inputs,dpMask),this.kernel.read()):h=dot5(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot5(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min7([1,max9([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min7([1,max9([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config={cells:cellConfigs};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones9(),rate),createMask=()=>inTrainPhase(droppedInputs,ones9,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot5(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot5(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range4(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast51(input2,"int32"));let output=gather7(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique7(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max9(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range4(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range4(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast51(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean7,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean7,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean7,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean7,variance,beta,gamma,epsilon3);return[normed,mean7,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean7=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range4(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean7.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean7,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range4(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range4(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range4(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean7,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable3,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable3.read(),updateDelta=origValue.sub(value).mul(decay);variable3.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean7,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique7(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean7,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step9=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step9,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor168 of additionalInputs)if(tensor168 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu8(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu8(args){return new PReLU(args)}function softmax5(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d5(args){return new Conv1D(args)}function conv2d11(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d3(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape91(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add32(args){return new Add10(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum9(args){return new Maximum3(args)}function minimum7(args){return new Minimum3(args)}function multiply3(args){return new Multiply7(args)}function dot6(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less7(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less7:this.mode==="max"?this.monitorFunc=greater11:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater11:this.monitorFunc=less7,this.monitorFunc===less7&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less7?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping};var DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor168=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor168.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor168.shape,data)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor168=resourceManager.getHashTableHandleByName(nodeName);if(tensor168!=null)return tensor168}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad11=getParamValue("pad",node,tensorMap,context);if(pad11==="explicit"){pad11=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad11[i*2],explicitPadding[i][1]=pad11[i*2+1];return explicitPadding}return pad11}function cloneTensor(tensor168){return tensor168.kept?tensor168:clone(tensor168)}var arithmetic_exports={};__export(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}};var executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor168.tensor.id))&&tensor168.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor168){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor168.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor168.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor168,keep(tensor168),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor168,0))}split(length,tensor168){if(tensor168.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor168.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to +2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique6(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value==null)return;if(values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult,f2=(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon2(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon2(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity4,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones7,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros8});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"];var nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod4=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile10(y,[1,n,1])})}function flatten3(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile10(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean6=0,stddev=1,dtype,seed){return randomNormal(shape,mean6,stddev,dtype,seed)}function dot4(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather6(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square24(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu6(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training5=!1){return training5?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity18=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity18.className="Identity";serialization_exports.registerClass(Identity18);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros8(){return new Zeros}function ones7(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity4(args){return new Identity18(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add31,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d4,conv2d:()=>conv2d10,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d5,dot:()=>dot5,dropout:()=>dropout3,elu:()=>elu7,embedding:()=>embedding,flatten:()=>flatten4,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum8,minimum:()=>minimum6,multiply:()=>multiply3,permute:()=>permute,prelu:()=>prelu7,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape90,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax4,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{let variable2=variableAndValue[0];variable2.write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape==null)return;if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses8){if(losses8==null||Array.isArray(losses8)&&losses8.length===0)return;losses8=toList(losses8),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses8)}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount===0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor167,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex),layer.inboundNodes.length===0)return[tensor167];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs5){if(logs5!=null)for(let key of this.params.metrics){if(this.totals[key]==null)continue;typeof this.totals[key]=="number"?logs5[key]=this.totals[key]/this.seen:tidy(()=>{let log9=mul(div(1,this.seen),this.totals[key]);logs5[key]=log9,this.totals[key].dispose(),keep(logs5[key])})}}},History=class extends BaseCallback{async onTrainBegin(logs5){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs5){logs5==null&&(logs5={}),this.epoch.push(epoch);for(let key in logs5)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs5[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors){let constructors=CallbackConstructorRegistry.constructors[+levelName];constructors.forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks3!=null&&actualCallbacks.push(...callbacks3),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square24(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon2()),norm5=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm5)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square24(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon2(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon2(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon2(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square24(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square24(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg19=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg19,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon2(),1-epsilon2()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten3(target)).toInt();output=clipByValue(output,epsilon2(),1-epsilon2());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon2(),1-epsilon2()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon2(),1),clippedPred=clipByValue(yPred,epsilon2(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon2(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast50(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast50(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon2()),Adam:()=>train.adam(.001,.9,.999,epsilon2()),Adamax:()=>train.adamax(.002,.9,.999,epsilon2(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon2()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys){if(typeof key!="string")return!1;if(!plainObjectCheck(x[key]))return!1}return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes){if(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1)continue;for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training5||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack8=[],marks=[];for(stack8.push(fetch3);stack8.length>0;){let top=stack8[stack8.length-1];if(visited.has(top.name)){stack8.pop();continue}let topIsMarked=marks[marks.length-1]===stack8.length-1;if(top.inputs.length===0||topIsMarked)stack8.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack8.length-1);for(let input2 of top.inputs){if(recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),visited.has(input2.name))continue;stack8.push(input2)}}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique6(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor167,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor167.sourceLayer,nodeIndex=tensor167.nodeIndex,tensorIndex=tensor167.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor167.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount===0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container2 of this.internalContainerRefs)result.numDisposedVariables+=container2.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/"),shortenNameArray=tokens.slice(0,-2).concat([tokens[tokens.length-1]]);validatedName=shortenNameArray.join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version10}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses8=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer;let inboundNodesData=layerData.inboundNodes;inboundNodesData.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layer=createdLayers[layerName],layerOutputTensors=layer.inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses8,sampleWeights){return mul(losses8,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset5,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks3,verbose,args.epochs,null,null,getStepsPerEpoch(dataset5,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset5.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset5)?dataset5:await dataset5.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather6(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks3,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range3(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks3,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks3=standardizeCallbacks(args.callbacks,args.yieldEvery),out=await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks3,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null);return out}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor167=tensors[name];oldTensorIds.indexOf(tensor167.id)===-1&&tensorsToDispose.push(tensor167)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique6(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique6(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);let theLosses=args.loss;lossFunctions=theLosses.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else{let metricFn=get2(metric);weightedMetricFn=metricFn,metricName=metricNamePrefix+getLossOrMetricName(metric)}let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}};handleMetrics(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){if(this.collectedTrainableWeights==null)return;this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset5,args){return this.makeTestFunction(),evaluateDataset(this,dataset5,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor167,i)=>{tensor167==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut))}return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!==0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range3(0,numSamples));for(let batchIndex=0;batchIndex1){let dupIndex=count(outLabels.slice(0,i),label);newLabel+=`_${dupIndex}`}dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables5=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0,totalLossValue=this.optimizer_.minimize(totalLossFunction,returnCost,variables5);return[totalLossValue].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses8=this.loss;for(let outputName of outputNames)if(typeof losses8[outputName]=="string")lossNames[outputName]=toSnakeCase(losses8[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer7=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer:optimizer7})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelConfig=this.toJSON(unusedArg,returnString),modelArtifacts={modelTopology:modelConfig,format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version10}`,convertedBy:null},includeOptimizer=config==null?!1:config.includeOptimizer;if(includeOptimizer&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer10,specs){let name2Tensor=io_exports.decodeWeights(buffer10,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){let shape=layer.inboundNodes[0].outputTensors[0].shape;if(shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset5,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer7){this.model.optimizer=optimizer7}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset5,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset5,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(!(config[0].className!=null)||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let customObjects2=void 0,layer=deserialize(conf,customObjects2,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu4=class extends Activation{apply(x,alpha=1){return elu6(x,alpha)}};Elu4.className="elu";serialization_exports.registerClass(Elu4);var Selu3=class extends Activation{apply(x){return selu(x)}};Selu3.className="selu";serialization_exports.registerClass(Selu3);var Relu5=class extends Activation{apply(x){return relu(x)}};Relu5.className="relu";serialization_exports.registerClass(Relu5);var Relu65=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu65.className="relu6";serialization_exports.registerClass(Relu65);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid4=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid4.className="sigmoid";serialization_exports.registerClass(Sigmoid4);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus3=class extends Activation{apply(x){return softplus(x)}};Softplus3.className="softplus";serialization_exports.registerClass(Softplus3);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh4=class extends Activation{apply(x){return tanh2(x)}};Tanh4.className="tanh";serialization_exports.registerClass(Tanh4);var Softmax3=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax3.className="softmax";serialization_exports.registerClass(Softmax3);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square24(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let className=identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config={className,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding2="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding2==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding2="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding2==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding2==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding2==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D5=class extends Conv{constructor(args){super(2,args);Conv2D5.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D5.className="Conv2D";serialization_exports.registerClass(Conv2D5);var Conv3D3=class extends Conv{constructor(args){super(3,args);Conv3D3.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D3.className="Conv3D";serialization_exports.registerClass(Conv3D3);var Conv2DTranspose=class extends Conv2D5{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=input2.resizeNearestNeighbor([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return input2.resizeNearestNeighbor([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d4(x,depthwiseKernel,strides=[1,1],padding2="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding2==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d4(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range3(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state6,i)=>stepOutputs[1][i].mul(stepMask).add(state6.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;if(needPerStepOutputs){let axis=1;outputs=stack(perStepOutputs,axis)}return[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range3(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state6 of initialState)this.stateSpec.push(new InputSpec({shape:state6.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length);let isTensor=additionalInputs[0]instanceof SymbolicTensor;if(isTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training:training5},step8=(inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},rnnOutputs=rnn(step8,inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training5);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile10(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile10(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training5=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training:training5})),0onesLike(prevOutput),rate:this.recurrentDropout,training:training5}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot4(mul(inputs,dpMask),this.kernel.read()):h=dot4(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot4(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min6([1,max8([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min6([1,max8([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training:training5,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),cellConfigs=this.cells.map(getCellConfig),config={cells:cellConfigs};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones8(),rate),createMask=()=>inTrainPhase(droppedInputs,ones8,training5);if(!count2||count2<=1)return keep(createMask().clone());let masks=Array(count2).fill(void 0).map(createMask);return masks.map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training5=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training:training5,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training5=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],batchSize=inputShape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training5?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state6.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding:padding2,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding2,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding2,strides[1],dilationRate[1]),outShape=[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]];return outShape}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding:padding2,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding2||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training5=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training:training5,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training:training5,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding2){let out=conv2d(x,w,this.strides,padding2||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){let strides=1;return conv2d(x,w,strides,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training5);return output}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot4(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot4(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape17=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape17.className="Reshape";serialization_exports.registerClass(Reshape17);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range3(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims),output=input2.mul(booleanMask.asType(input2.dtype));return output})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);input2.dtype!=="int32"&&(input2=cast50(input2,"int32"));let output=gather6(this.embeddings.read(),input2.as1D());return output.reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique6(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max8(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range3(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range3(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),noised=()=>randomNormal2(input2.shape,0,this.stddev).add(input2),output=inTrainPhase(noised,()=>input2,kwargs.training||!1);return output})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.rate>0&&this.rate<1){let noised=()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))};return inTrainPhase(noised,()=>input2,kwargs.training||!1)}return input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs),droppedInputs=()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast50(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate,x=input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP));return x.mul(a).add(b)};return inTrainPhase(droppedInputs,()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean6,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean6,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean6,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,normed=batchNormalization(x,mean6,variance,beta,gamma,epsilon3);return[normed,mean6,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean6=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range3(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean6.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape),normed=batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3);return[normed,mean6,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range3(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training5=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range3(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range3(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training5)return normalizeInference();let[normedTraining,mean6,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})},updateMovingMeanAndVariance=()=>{doMovingAverage(this.movingMean,mean6,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)};return updateMovingMeanAndVariance(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique6(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean6,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding2==null&&(padding2=[[1,1],[1,1]]),padding2.length!==2||padding2[0].length!==2||padding2[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding2[0],padding2[1]]:pattern=[[0,0],padding2[0],padding2[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding2,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding2),strides==null&&(strides=[1,1,1]),padding2==null&&(padding2="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding2==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool2d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding2,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding2),pool3d(inputs,poolSize,strides,padding2,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let step8=(inputs2,states)=>{let output=getExactlyOneTensor(this.layer.call(inputs2,kwargs));return[output,[]]},rnnOutputs=rnn(step8,inputs,[],!1,null,null,!1,!0),y=rnnOutputs[1];return y})}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=!(layerConfig.goBackwards===!0);let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state6=>new InputSpec({shape:state6.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor167 of additionalInputs)if(tensor167 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let states=this.forwardLayer.states,stateMask=states.map(state6=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu7(args){return new ELU3(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu7(args){return new PReLU(args)}function softmax4(args){return new Softmax4(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d4(args){return new Conv1D(args)}function conv2d10(args){return new Conv2D5(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D3(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d5(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten4(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape90(args){return new Reshape17(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add31(args){return new Add9(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum8(args){return new Maximum3(args)}function minimum6(args){return new Minimum3(args)}function multiply3(args){return new Multiply6(args)}function dot5(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less6(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less6:this.mode==="max"?this.monitorFunc=greater10:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater10:this.monitorFunc=less6,this.monitorFunc===less6&&(this.minDelta*=-1)}async onTrainBegin(logs5){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less6?Infinity:-Infinity}async onEpochEnd(epoch,logs5){await resolveScalarsInLogs(logs5);let current=this.getMonitorValue(logs5);if(current==null)return;this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0))}async onTrainEnd(logs5){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs5){logs5==null&&(logs5={});let monitorValue=logs5[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs5)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping};var DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors"){let inputs=node.inputNames.slice(start,end);return inputs.map(name=>getTensor(name,tensorMap,context,resourceManager))}let tensor167=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor167.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor167.shape,data)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor167=resourceManager.getHashTableHandleByName(nodeName);if(tensor167!=null)return tensor167}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");if(parts.length===1)return[name,0];let nodeName=parts[0];return[nodeName,Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad10=getParamValue("pad",node,tensorMap,context);if(pad10==="explicit"){pad10=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad10[i*2],explicitPadding[i][1]=pad10[i*2+1];return explicitPadding}return pad10}function cloneTensor(tensor167){return tensor167.kept?tensor167:clone(tensor167)}var arithmetic_exports={};__export(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"clip_value_min",name:"clipValueMin",type:"number"},{tfName:"clip_value_max",name:"clipValueMax",type:"number"}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"clipValueMin",name:"clipValueMin",type:"number",defaultValue:0},{tfName:"clipValueMax",name:"clipValueMax",type:"number",defaultValue:6}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export(control_exports,{json:()=>json3});var json3=[{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool",notSupported:!0}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops69=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops69.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node});let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){typeof value=="string"&&(value=DataType[value]);switch(value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){return shape.unknownRank?void 0:shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}};var executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"Relu6":case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor167.tensor.id))&&tensor167.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor167){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, + because the value dtype is ${tensor167.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor167.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor167,keep(tensor167),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor167,0))}split(length,tensor167){if(tensor167.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor167.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=[];tidy(()=>{tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor168.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor168.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor168=>{(keepIds==null||!keepIds.has(tensor168.id))&&tensor168.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor168=>reshape(tensor168,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor168=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor168.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor168,elementShape)}pushBack(tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor168.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor168),this.tensors.push(tensor168)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor168){if(tensor168.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor168.shape,"TensorList shape mismatch: "),keep(tensor168),this.tensors[elementIndex]=tensor168}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor168,elementShape,elementDtype){let dtype=tensor168.dtype;if(tensor168.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor168.shape}`);if(tensor168.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor168.dtype}, but list elements ${elementDtype}`);let outputShape=tensor168.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor168);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor168,indices,elementShape,numElements){if(indices.length!==tensor168.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor168.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor168.dtype,numElements),tensors=unstack(tensor168,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split12(tensor168,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor168.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=[];tidy(()=>{tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor167.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor167.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor167=>{(keepIds==null||!keepIds.has(tensor167.id))&&tensor167.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor167=>reshape(tensor167,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor167=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor167.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor167,elementShape)}pushBack(tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor167.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor167),this.tensors.push(tensor167)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor167){if(tensor167.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor167.shape,"TensorList shape mismatch: "),keep(tensor167),this.tensors[elementIndex]=tensor167}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor4([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor167,elementShape,elementDtype){let dtype=tensor167.dtype;if(tensor167.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor167.shape}`);if(tensor167.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor167.dtype}, but list elements ${elementDtype}`);let outputShape=tensor167.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor167);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor167,indices,elementShape,numElements){if(indices.length!==tensor167.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor167.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor167.dtype,numElements),tensors=unstack(tensor167,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split11(tensor167,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor167.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor168.shape}`);let elementPerRow=totalLength===0?0:tensor168.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor168=reshape(tensor168,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor168=>tensor168.id),condValue=await condResult[0].data();condResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor168=>tensor168.id);origResult.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor168=>{!tensor168.kept&&argIds.indexOf(tensor168.id)===-1&&resultIds.indexOf(tensor168.id)===-1&&tensor168.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context);return data.kept||(data=cloneTensor(data)),(await pred.data())[0]?[void 0,data]:[data,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data=getTensor(inputName,tensorMap,context);return[cloneTensor(data)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data)]}case"Exit":{let data=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data)]}case"NextIteration":{let data=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor168=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor168,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split12(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad11,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad11,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad11,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad11)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad11,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad11,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad11,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad11)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad11=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad11,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step9=getParamValue("step",node,tensorMap,context);return[range(start,stop,step9,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean7=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean7,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data2=getParamValue("x",node,tensorMap,context);return[cloneTensor(data2)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}};var executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse12=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse12)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor168,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor168=>{let sameShape=util_exports.arraysEqual(tensor168.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor168).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor168:reshape(tensor168,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor168=getParamValue("tensor",node,tensorMap,context);return unstack(tensor168,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor168=getParamValue("x",node,tensorMap,context);return split(tensor168,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data=>[].concat(data)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&(dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name)))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor168=>tensor168.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor168=>tensor168.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor168=>{tensor168!=null&&(intermediateTensorConsumerCount[tensor168.id]=(intermediateTensorConsumerCount[tensor168.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor168=>{if(tensor168&&!tensorsToKeep.has(tensor168.id)){let count2=intermediateTensorConsumerCount[tensor168.id];count2===1?(tensor168.dispose(),delete intermediateTensorConsumerCount[tensor168.id]):count2!=null&&intermediateTensorConsumerCount[tensor168.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor168=>{tensor168&&!tensor168.isDisposed&&!keepIds.has(tensor168.id)&&tensor168.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor168,index)=>(map[this.inputs[index].name]=tensor168,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack9=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack9.length>0;){let promises=this.processStack(inputNodes,stack9,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack9,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack9.length>0;){let item=stack9.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack9,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack9,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack9.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor168=>tensor168.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor168=this._signature.inputs[inputName];result[tensor168.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor168=this._signature.outputs[name];return tensor168.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}};var TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&(modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`));let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version17="2.7.0";var dist_exports={};__export(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version19,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule(require_seedrandom6()),seedrandom3=__toModule(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}};var GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max10){return Math.floor(this.random()*max10)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}};var Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is + ${totalLength}, and tensor's shape is: ${tensor167.shape}`);let elementPerRow=totalLength===0?0:tensor167.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor167=reshape(tensor167,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condValue=await cond.data();return condValue[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor167=>tensor167.id),condValue=await condResult[0].data();condResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor167=>tensor167.id);origResult.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor167=>{!tensor167.kept&&argIds.indexOf(tensor167.id)===-1&&resultIds.indexOf(tensor167.id)===-1&&tensor167.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context);return data.kept||(data=cloneTensor(data)),(await pred.data())[0]?[void 0,data]:[data,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data=getTensor(inputName,tensorMap,context);return[cloneTensor(data)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data)]}case"Exit":{let data=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data)]}case"NextIteration":{let data=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),readTensorArray=context.getTensorArray(readId.id);return[readTensorArray.read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context),gatherTensorArray=context.getTensorArray(gatherId.id);return[gatherTensorArray.gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(gatherId.id);return[tensorList.gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor167=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor167,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return[tensorList.popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split11(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad10,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad10,dataFormat,dilations,biasArg,preluArg,activationFunc}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad10,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad10)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad10,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad10,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad10,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad10)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad10=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad10,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step8=getParamValue("step",node,tensorMap,context);return[range(start,stop,step8,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean6=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean6,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data2=getParamValue("x",node,tensorMap,context);return[cloneTensor(data2)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}};var executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context),hashTable2=resourceManager.getHashTableById(handle.id);return[await hashTable2.find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg})];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse11=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse11)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"GatherV2":case"Gather":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis)]}case"ReverseV2":case"Reverse":{let axis=getParamValue("axis",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context);return[reverse(input2,axis)]}case"Slice":{let begin=getParamValue("begin",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[slice(getParamValue("x",node,tensorMap,context),begin,size)]}case"StridedSlice":{let begin=getParamValue("begin",node,tensorMap,context),end=getParamValue("end",node,tensorMap,context),strides=getParamValue("strides",node,tensorMap,context),beginMask=getParamValue("beginMask",node,tensorMap,context),endMask=getParamValue("endMask",node,tensorMap,context),ellipsisMask=getParamValue("ellipsisMask",node,tensorMap,context),newAxisMask=getParamValue("newAxisMask",node,tensorMap,context),shrinkAxisMask=getParamValue("shrinkAxisMask",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return[stridedSlice(tensor167,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)]}case"Pack":return tidy(()=>{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor167=>{let sameShape=util_exports.arraysEqual(tensor167.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor167).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor167:reshape(tensor167,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor167=getParamValue("tensor",node,tensorMap,context);return unstack(tensor167,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor167=getParamValue("x",node,tensorMap,context);return split(tensor167,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data=>[].concat(data)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&(dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name)))),usedNodes.add(node.name),weightMap[node.name]!=null)continue;if(inputNodeNames.indexOf(node.name)!==-1)continue;if(initNodeNames.indexOf(node.name)!==-1)continue;if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{if(seen.has(input2.name))return;seen.add(input2.name),frontier.push(input2)})}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor167=>tensor167.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor167=>tensor167.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){if(node.category==="control"||outputNames.indexOf(nodeName)!==-1)return;tensorMap[nodeName].forEach(tensor167=>{tensor167!=null&&(intermediateTensorConsumerCount[tensor167.id]=(intermediateTensorConsumerCount[tensor167.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor167=>{if(tensor167&&!tensorsToKeep.has(tensor167.id)){let count2=intermediateTensorConsumerCount[tensor167.id];count2===1?(tensor167.dispose(),delete intermediateTensorConsumerCount[tensor167.id]):count2!=null&&intermediateTensorConsumerCount[tensor167.id]--}})}})}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{let tensorArray=tensorMap[key];tensorArray.forEach(tensor167=>{tensor167&&!tensor167.isDisposed&&!keepIds.has(tensor167.id)&&tensor167.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor167,index)=>(map[this.inputs[index].name]=tensor167,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack8=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack8.length>0;){let promises=this.processStack(inputNodes,stack8,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack8,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack8.length>0;){let item=stack8.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack8,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack8,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);if(added[nodeName]||!usedNodes.has(childNode.name))return;childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack8.push({contexts:context.currentContext,node:childNode}))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor167=>tensor167.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor167=this._signature.inputs[inputName];result[tensor167.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>{if(this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null){let tensor167=this._signature.outputs[name];return tensor167.name}return name},{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}};var TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature={};this.artifacts.userDefinedMetadata!=null&&(signature=this.artifacts.userDefinedMetadata.signature),this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&(modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`));let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version14="2.7.0";var dist_exports={};__export(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version16,webcam:()=>webcam,zip:()=>zip});var seedrandom4=__toModule(require_seedrandom6()),seedrandom3=__toModule(require_seedrandom6());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}let result=deepMapInternal(input2,mapFn,seen);return result}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container2){return deepMap(container2,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}};var GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){let rowBatches=this.rowMajorBatch(batchSize,smallLastBatch);return rowBatches.map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){let upstreamSummaries="TODO: fill in upstream of chained summaries";return`${upstreamSummaries} -> Chained`}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){let upstreamSummaries="TODO: fill in upstream of zip summaries";return`{${upstreamSummaries}} -> Zip`}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container2){if(container2 instanceof LazyIterator){let result=container2.next();return{value:result.then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}}else return{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom3.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max9){return Math.floor(this.random()*max9)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}};var Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset5){let base2=this,size;return this.size===Infinity||dataset5.size===Infinity?size=Infinity:this.size!=null&&dataset5.size!=null?size=this.size+dataset5.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset5.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let base2=this,random=seedrandom4.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];if(canTensorify(exampleRow)){let value=batchConcat(rows);return{value,recurse:!1}}return{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor4(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){let inputIterator=await this.input.iterator(),utf8Iterator=inputIterator.decodeUTF8(),lineIterator=utf8Iterator.split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}};var CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data,i)=>freqData.set(data,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}};var WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}};var DataSource=class{};var StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}};var ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}};var FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data=fileReader.result;if(data instanceof ArrayBuffer&&(data=new Uint8Array(data)),!(data instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice21=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice21)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}};var URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version19="2.7.0";var version21={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version9,"tfjs-backend-wasm":version11};export{Abs,Acos,Acosh,AdadeltaOptimizer,AdagradOptimizer,AdamOptimizer,AdamaxOptimizer,Add,AddN,All,Any,ArgMax,ArgMin,Asin,Asinh,Atan,Atan2,Atanh,AvgPool,AvgPool3D,AvgPool3DBackprop,AvgPoolBackprop,BackendWasm,BatchMatMul,BatchToSpaceND,BroadcastTo,Callback,CallbackList,Cast,Ceil,ClipByValue,Complex,Concat,Conv2D,Conv2DBackpropFilter,Conv2DBackpropInput,Conv3D,Conv3DBackpropFilterV2,Conv3DBackpropInputV2,Cos,Cosh,CropAndResize,Cumsum,CustomCallback,DataStorage,DepthToSpace,DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput,Diag,Dilation2D,Dilation2DBackpropFilter,Dilation2DBackpropInput,Div,ENV,EarlyStopping,Elu,EluGrad,Environment,Equal,Erf,Exp,Expm1,FFT,Fill,FlipLeftRight,Floor,FloorDiv,FromPixels,FusedBatchNorm,FusedConv2D,FusedDepthwiseConv2D,GPGPUContext,GatherNd,GatherV2,GraphModel,Greater,GreaterEqual,History,IFFT,Identity,Imag,InputSpec,IsFinite,IsInf,IsNan,KernelBackend,LRN,LRNBackprop,LayerVariable,LayersModel,Less,LessEqual,LinSpace,Log,Log1p,LogSoftmax,LogicalAnd,LogicalNot,LogicalOr,MathBackendCPU,MathBackendWebGL,Max,MaxPool,MaxPool3D,MaxPool3DBackprop,MaxPoolBackprop,MaxPoolWithArgmax,Maximum,Mean,Min,Minimum,MirrorPad,Mod,MomentumOptimizer,Multiply,Negate,NonMaxSuppressionV3,NonMaxSuppressionV4,NonMaxSuppressionV5,NotEqual,OP_SCOPE_SUFFIX,OneHot,OnesLike,Optimizer,PadV2,Pool,Pow,Prelu,Prod,RMSPropOptimizer,RNN,Range,Rank,Real,Reciprocal,Reduction,Relu,Relu6,Reshape,ResizeBilinear,ResizeBilinearGrad,ResizeNearestNeighbor,ResizeNearestNeighborGrad,Reverse,RotateWithOffset,Round,Rsqrt,SGDOptimizer,ScatterNd,SelectV2,Selu,Sequential,Sigmoid,Sign,Sin,Sinh,Slice,Softmax,Softplus,SpaceToBatchND,SparseToDense,SplitV,Sqrt,Square,SquaredDifference,Step,StridedSlice,Sub,Sum,SymbolicTensor,Tan,Tanh,Tensor,TensorBuffer,Tile,TopK,Transpose,Unique,Unpack,UnsortedSegmentSum,Variable,ZerosLike,_FusedMatMul,abs,acos,acosh,add2 as add,addN,addStrict,all,any,argMax,argMin,asin,asinh,atan,atan2,atanh,avgPool,avgPool3d,backend2 as backend,backend_util_exports as backend_util,basicLSTMCell,batchNorm,batchNorm2d,batchNorm3d,batchNorm4d,batchToSpaceND,booleanMaskAsync,broadcastTo,browser_exports as browser,buffer,callbacks,cast,ceil,clipByValue,clone,complex,concat,concat1d,concat2d,concat3d,concat4d,exports_constraints_exports as constraints,conv1d,conv2d,conv2dTranspose,conv3d,conv3dTranspose,copyRegisteredKernels,cos,cosh,cosineWindow,cumsum,customGrad,dist_exports as data,deprecationWarn,depthToSpace,depthwiseConv2d,deregisterOp,device_util_exports as device_util,diag,dilation2d,disableDeprecationWarnings,dispose,disposeVariables,div,divNoNan,divStrict,dot,dropout,elu,enableDebugMode,enableProdMode,enclosingPowerOfTwo,engine15 as engine,env,equal,equalStrict,erf,exp,expandDims,expm1,eye,fft,fill,findBackend,findBackendFactory,floor,floorDiv,forceHalfFloat,fused_ops_exports as fused,gather,gatherND,gather_nd_util_exports as gather_util,getBackend,getGradient,getKernel,getKernelsForBackend,gpgpu_util_exports as gpgpu_util,grad,grads,greater,greaterEqual,greaterEqualStrict,greaterStrict,ifft,imag,image,inTopKAsync,exports_initializers_exports as initializers,input,io_exports as io,irfft,isFinite2 as isFinite,isInf,isNaN2 as isNaN,keep,kernel_impls_exports as kernel_impls,exports_layers_exports as layers,leakyRelu,less,lessEqual,lessEqualStrict,lessStrict,linalg,linspace,loadGraphModel,loadLayersModel,localResponseNormalization,log,log1p,logSigmoid,logSoftmax,logSumExp,logicalAnd,logicalNot,logicalOr,logicalXor,losses,matMul,math_exports as math,max,maxPool,maxPool3d,maxPoolWithArgmax,maximum,maximumStrict,mean,memory,exports_metrics_exports as metrics,min,minimum,minimumStrict,mirrorPad,mod,modStrict,model,exports_models_exports as models,moments,movingAverage,mul,mulStrict,multiRNNCell,multinomial,neg,nextFrame,norm,notEqual,notEqualStrict,oneHot,ones2 as ones,onesLike,op,outerProduct,pad,pad1d,pad2d,pad3d,pad4d,pool,pow,powStrict,prelu,print2 as print,prod,profile,rand,randomGamma,randomNormal,randomUniform,range,ready,real,reciprocal,registerBackend,registerCallbackConstructor,registerGradient,registerKernel,registerOp,exports_regularizers_exports as regularizers,relu,relu6,removeBackend,reshape,reverse,reverse1d,reverse2d,reverse3d,reverse4d,rfft,round,rsqrt,scalar,scatterND,scatter_nd_util_exports as scatter_util,selu,separableConv2d,sequential,serialization_exports as serialization,setBackend,setPlatform,setWasmPath,setWasmPaths,setWebGLContext,setdiff1dAsync,shared_exports as shared,sigmoid,sign,signal,sin,sinh,slice,slice1d,slice2d,slice3d,slice4d,slice_util_exports as slice_util,softmax,softplus,spaceToBatchND,sparseToDense,spectral,split,sqrt,square,squaredDifference,squaredDifferenceStrict,squeeze,stack,step,stridedSlice,sub,subStrict,sum2 as sum,sumOutType,tan,tanh2 as tanh,tensor4 as tensor,tensor1d,tensor2d,tensor3d,tensor4d,tensor5d,tensor6d,tensor_util_exports as tensor_util,test_util_exports as test_util,tidy,tile,time,topk,train,transpose,truncatedNormal,unique,unregisterGradient,unregisterKernel,unsortedSegmentSum,unstack,upcastType,util_exports as util,valueAndGrad,valueAndGrads,variable,variableGrads,version21 as version,version17 as version_converter,version6 as version_core,version7 as version_cpu,version13 as version_layers,version11 as version_wasm,version9 as version_webgl,webgl2 as webgl,webgl_util_exports as webgl_util,where,whereAsync,zeros,zerosLike}; +`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line));return lineIterator}};var CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=!(csvConfig.hasHeader===!1),this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs)for(let key of Object.keys(this.columnConfigs)){let index=this.fullColumnNames.indexOf(key);if(index===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let iter=await this.base.iterator(),firstElement=await iter.next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value,headers=this.parseRow(firstLine,!1);return headers}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=!(microphoneConfig.includeSpectrogram===!1),this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data,i)=>freqData.set(data,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor4(vals,shape)}};var WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){let tracks=this.stream.getTracks();tracks.forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}};var DataSource=class{};var StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}};var ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}};var FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){if(this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size))return{value:null,done:!0};let chunk=new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data=fileReader.result;if(data instanceof ArrayBuffer&&(data=new Uint8Array(data)),!(data instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice20=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice20)}this.offset=end});return{value:await chunk,done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>{let init2={method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity};return init2};function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}};var URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version16="2.7.0";var version18={tfjs:version,"tfjs-core":version2,"tfjs-data":version3,"tfjs-layers":version4,"tfjs-converter":version5,"tfjs-backend-cpu":version7,"tfjs-backend-webgl":version8,"tfjs-backend-wasm":version9};export{Abs,Acos,Acosh,AdadeltaOptimizer,AdagradOptimizer,AdamOptimizer,AdamaxOptimizer,Add,AddN,All,Any,ArgMax,ArgMin,Asin,Asinh,Atan,Atan2,Atanh,AvgPool,AvgPool3D,AvgPool3DBackprop,AvgPoolBackprop,BackendWasm,BatchMatMul,BatchToSpaceND,BroadcastTo,Callback,CallbackList,Cast,Ceil,ClipByValue,Complex,Concat,Conv2D,Conv2DBackpropFilter,Conv2DBackpropInput,Conv3D,Conv3DBackpropFilterV2,Conv3DBackpropInputV2,Cos,Cosh,CropAndResize,Cumsum,CustomCallback,DataStorage,DepthToSpace,DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput,Diag,Dilation2D,Dilation2DBackpropFilter,Dilation2DBackpropInput,Div,ENV,EarlyStopping,Elu,EluGrad,Environment,Equal,Erf,Exp,Expm1,FFT,Fill,FlipLeftRight,Floor,FloorDiv,FromPixels,FusedBatchNorm,FusedConv2D,FusedDepthwiseConv2D,GPGPUContext,GatherNd,GatherV2,GraphModel,Greater,GreaterEqual,History,IFFT,Identity,Imag,InputSpec,IsFinite,IsInf,IsNan,KernelBackend,LRN,LRNBackprop,LayerVariable,LayersModel,Less,LessEqual,LinSpace,Log,Log1p,LogSoftmax,LogicalAnd,LogicalNot,LogicalOr,MathBackendCPU,MathBackendWebGL,Max,MaxPool,MaxPool3D,MaxPool3DBackprop,MaxPoolBackprop,MaxPoolWithArgmax,Maximum,Mean,Min,Minimum,MirrorPad,Mod,MomentumOptimizer,Multiply,Negate,NonMaxSuppressionV3,NonMaxSuppressionV4,NonMaxSuppressionV5,NotEqual,OP_SCOPE_SUFFIX,OneHot,OnesLike,Optimizer,PadV2,Pool,Pow,Prelu,Prod,RMSPropOptimizer,RNN,Range,Rank,Real,Reciprocal,Reduction,Relu,Relu6,Reshape,ResizeBilinear,ResizeBilinearGrad,ResizeNearestNeighbor,ResizeNearestNeighborGrad,Reverse,RotateWithOffset,Round,Rsqrt,SGDOptimizer,ScatterNd,SelectV2,Selu,Sequential,Sigmoid,Sign,Sin,Sinh,Slice,Softmax,Softplus,SpaceToBatchND,SparseToDense,SplitV,Sqrt,Square,SquaredDifference,Step,StridedSlice,Sub,Sum,SymbolicTensor,Tan,Tanh,Tensor,TensorBuffer,Tile,TopK,Transpose,Unique,Unpack,UnsortedSegmentSum,Variable,ZerosLike,_FusedMatMul,abs,acos,acosh,add2 as add,addN,addStrict,all,any,argMax,argMin,asin,asinh,atan,atan2,atanh,avgPool,avgPool3d,backend2 as backend,backend_util_exports as backend_util,basicLSTMCell,batchNorm,batchNorm2d,batchNorm3d,batchNorm4d,batchToSpaceND,booleanMaskAsync,broadcastTo,browser_exports as browser,buffer,callbacks,cast,ceil,clipByValue,clone,complex,concat,concat1d,concat2d,concat3d,concat4d,exports_constraints_exports as constraints,conv1d,conv2d,conv2dTranspose,conv3d,conv3dTranspose,copyRegisteredKernels,cos,cosh,cosineWindow,cumsum,customGrad,dist_exports as data,deprecationWarn,depthToSpace,depthwiseConv2d,deregisterOp,device_util_exports as device_util,diag,dilation2d,disableDeprecationWarnings,dispose,disposeVariables,div,divNoNan,divStrict,dot,dropout,elu,enableDebugMode,enableProdMode,enclosingPowerOfTwo,engine15 as engine,env,equal,equalStrict,erf,exp,expandDims,expm1,eye,fft,fill,findBackend,findBackendFactory,floor,floorDiv,forceHalfFloat,fused_ops_exports as fused,gather,gatherND,gather_nd_util_exports as gather_util,getBackend,getGradient,getKernel,getKernelsForBackend,gpgpu_util_exports as gpgpu_util,grad,grads,greater,greaterEqual,greaterEqualStrict,greaterStrict,ifft,imag,image,inTopKAsync,exports_initializers_exports as initializers,input,io_exports as io,irfft,isFinite2 as isFinite,isInf,isNaN2 as isNaN,keep,kernel_impls_exports as kernel_impls,exports_layers_exports as layers,leakyRelu,less,lessEqual,lessEqualStrict,lessStrict,linalg,linspace,loadGraphModel,loadLayersModel,localResponseNormalization,log,log1p,logSigmoid,logSoftmax,logSumExp,logicalAnd,logicalNot,logicalOr,logicalXor,losses,matMul,math_exports as math,max,maxPool,maxPool3d,maxPoolWithArgmax,maximum,maximumStrict,mean,memory,exports_metrics_exports as metrics,min,minimum,minimumStrict,mirrorPad,mod,modStrict,model,exports_models_exports as models,moments,movingAverage,mul,mulStrict,multiRNNCell,multinomial,neg,nextFrame,norm,notEqual,notEqualStrict,oneHot,ones2 as ones,onesLike,op,outerProduct,pad,pad1d,pad2d,pad3d,pad4d,pool,pow,powStrict,prelu,print2 as print,prod,profile,rand,randomGamma,randomNormal,randomUniform,range,ready,real,reciprocal,registerBackend,registerCallbackConstructor,registerGradient,registerKernel,registerOp,exports_regularizers_exports as regularizers,relu,relu6,removeBackend,reshape,reverse,reverse1d,reverse2d,reverse3d,reverse4d,rfft,round,rsqrt,scalar,scatterND,scatter_nd_util_exports as scatter_util,selu,separableConv2d,sequential,serialization_exports as serialization,setBackend,setPlatform,setWasmPath,setWasmPaths,setWebGLContext,setdiff1dAsync,shared_exports as shared,sigmoid,sign,signal,sin,sinh,slice,slice1d,slice2d,slice3d,slice4d,slice_util_exports as slice_util,softmax,softplus,spaceToBatchND,sparseToDense,spectral,split,sqrt,square,squaredDifference,squaredDifferenceStrict,squeeze,stack,step,stridedSlice,sub,subStrict,sum2 as sum,sumOutType,tan,tanh2 as tanh,tensor4 as tensor,tensor1d,tensor2d,tensor3d,tensor4d,tensor5d,tensor6d,tensor_util_exports as tensor_util,test_util_exports as test_util,tidy,tile,time,topk,train,transpose,truncatedNormal,unique,unregisterGradient,unregisterKernel,unsortedSegmentSum,unstack,upcastType,util_exports as util,valueAndGrad,valueAndGrads,variable,variableGrads,version18 as version,version14 as version_converter,version6 as version_core,version7 as version_cpu,version10 as version_layers,version9 as version_wasm,version8 as version_webgl,webgl2 as webgl,webgl_util_exports as webgl_util,where,whereAsync,zeros,zerosLike}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/tfjs.esm.js.map b/dist/tfjs.esm.js.map index b339f8b7..6ef5f2a3 100644 --- a/dist/tfjs.esm.js.map +++ b/dist/tfjs.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../src/tfjs/tf-browser.js"], - "sourcesContent": ["", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n"], - "mappings": "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UACZ,SAAU,mBACR,mBAAuC,OAChC,MAAQ,wBACE,AAAU,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,aC7BnC,AAqBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,SC1BnC,AA8BO,IAAM,6BAA2C,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WCxDrC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAmHA,IAAM,YAA4B,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,cACA,kBACA,oBACA,cACA,mBACA,iBACA,iBACA,mBACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,uBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,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", + "sources": ["empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/array_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/split_shared.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/tile_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/topk_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Div_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Negate_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SelectV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolBackprop.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Div.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Negate.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SelectV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Split.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.js"], + "sourcesContent": ["", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":165,\"maximum\":165+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256384,STACKTOP=STACK_BASE,STACK_MAX=13504,DYNAMIC_BASE=5256384,DYNAMICTOP_PTR=12576;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13488;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=12976;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":147,\"maximum\":147+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Div=Module[\"_Div\"]=function(){return(_Div=Module[\"_Div\"]=Module[\"asm\"][\"Div\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Negate=Module[\"_Negate\"]=function(){return(_Negate=Module[\"_Negate\"]=Module[\"asm\"][\"Negate\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = String(data);\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2019 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (global, pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\nvar width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n} else {\n // When included as a plain script, set up Math.seedrandom global.\n math['seed' + rngname] = seedrandom;\n}\n\n\n// End anonymous scope, and pass initial values.\n})(\n // global: `self` in browsers (including strict mode and web workers),\n // otherwise `this` in Node and other environments\n (typeof self !== 'undefined') ? self : this,\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport { version as tfjs } from '@tensorflow/tfjs/package.json';\nimport { version as versionCore } from '@tensorflow/tfjs-core/package.json';\nimport { version as versionData } from '@tensorflow/tfjs-data/package.json';\nimport { version as versionLayers } from '@tensorflow/tfjs-layers/package.json';\nimport { version as versionConverter } from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs,\n 'tfjs-core': versionCore,\n 'tfjs-data': versionData,\n 'tfjs-layers': versionLayers,\n 'tfjs-converter': versionConverter,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n"], + "mappings": "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mBACR,mBAAuC,OAChC,MAAQ,wBACE,AAAU,uBAAuB,MAClD,MAAO,CAAC,EAAG,IAAM,UAAU,GAAI,aC7BnC,AAqBO,IAAM,iBAA+B,CAC1C,WAAY,OACZ,SAAU,mBACR,gBAAiC,OAC1B,MAAQ,YACf,MAAO,CAAC,MAAO,IAAM,MAAM,GAAI,SC1BnC,AA8BO,IAAM,6BAA2C,CACtD,WAAY,mBACZ,aAAc,CAAC,cACf,SAAU,aACR,gBAAqB,WAER,IACJ,oBAAoB,GAAI,YAEjC,MAAO,CAAC,EAAG,QAIf,wCAIE,uBAA2B,QAAQ,QAAS,UAAU,mBACrC,OAAO,EAAG,+BACV,aAAa,QAAS,OAAO,EAAG,mBAChC,SAAS,KAAO,WAAW,KAC5C,UAAa,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,cAAkB,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WCxDrC,AAsBO,IAAM,oBAAkC,CAC7C,WAAY,UACZ,SAAU,IACD,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAmHA,IAAM,YAA4B,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,cACA,kBACA,oBACA,cACA,mBACA,iBACA,iBACA,mBACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,uBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,yBAA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", "names": [] } diff --git a/dist/tfjs.esm.json b/dist/tfjs.esm.json index eaff2326..9329c057 100644 --- a/dist/tfjs.esm.json +++ b/dist/tfjs.esm.json @@ -17869,7 +17869,7 @@ "dist/tfjs.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 1094244 + "bytes": 1087999 }, "dist/tfjs.esm.js": { "imports": [], @@ -18467,10 +18467,10 @@ "bytesInOutput": 21 }, "node_modules/@tensorflow/tfjs-core/dist/backends/backend.js": { - "bytesInOutput": 9405 + "bytesInOutput": 9404 }, "node_modules/@tensorflow/tfjs-core/dist/util_base.js": { - "bytesInOutput": 8572 + "bytesInOutput": 8570 }, "node_modules/@tensorflow/tfjs-core/dist/environment.js": { "bytesInOutput": 2870 @@ -18646,9 +18646,6 @@ "node_modules/@tensorflow/tfjs-core/dist/ops/abs.js": { "bytesInOutput": 225 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/ops.js": { - "bytesInOutput": 504 - }, "node_modules/@tensorflow/tfjs-core/dist/ops/acos.js": { "bytesInOutput": 203 }, @@ -18809,7 +18806,7 @@ "bytesInOutput": 194 }, "node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js": { - "bytesInOutput": 279 + "bytesInOutput": 276 }, "node_modules/@tensorflow/tfjs-core/dist/ops/dot.js": { "bytesInOutput": 995 @@ -18839,10 +18836,10 @@ "bytesInOutput": 154 }, "node_modules/@tensorflow/tfjs-core/dist/ops/floor.js": { - "bytesInOutput": 170 + "bytesInOutput": 169 }, "node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js": { - "bytesInOutput": 1072 + "bytesInOutput": 1068 }, "node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js": { "bytesInOutput": 168 @@ -19019,10 +19016,10 @@ "bytesInOutput": 650 }, "node_modules/@tensorflow/tfjs-core/dist/ops/rand.js": { - "bytesInOutput": 415 + "bytesInOutput": 414 }, "node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js": { - "bytesInOutput": 2351 + "bytesInOutput": 2344 }, "node_modules/@tensorflow/tfjs-core/dist/ops/random_gamma.js": { "bytesInOutput": 401 @@ -19180,6 +19177,9 @@ "node_modules/@tensorflow/tfjs-core/dist/ops/boolean_mask.js": { "bytesInOutput": 1054 }, + "node_modules/@tensorflow/tfjs-core/dist/ops/ops.js": { + "bytesInOutput": 504 + }, "node_modules/@tensorflow/tfjs-core/dist/ops/compare.js": { "bytesInOutput": 2011 }, @@ -19793,7 +19793,7 @@ "bytesInOutput": 75 }, "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js": { - "bytesInOutput": 110 + "bytesInOutput": 108 }, "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js": { "bytesInOutput": 126 @@ -20168,7 +20168,7 @@ "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js": { - "bytesInOutput": 40242 + "bytesInOutput": 40239 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js": { "bytesInOutput": 241 @@ -20222,7 +20222,7 @@ "bytesInOutput": 155 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js": { - "bytesInOutput": 323 + "bytesInOutput": 319 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js": { "bytesInOutput": 362 @@ -20248,12 +20248,12 @@ "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js": { "bytesInOutput": 1319 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js": { - "bytesInOutput": 48 - }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/version.js": { "bytesInOutput": 21 }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js": { + "bytesInOutput": 48 + }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/index.js": { "bytesInOutput": 0 }, @@ -20486,7 +20486,7 @@ "bytesInOutput": 1464 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js": { - "bytesInOutput": 17037 + "bytesInOutput": 17035 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js": { "bytesInOutput": 1586 @@ -20534,10 +20534,10 @@ "bytesInOutput": 4185 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js": { - "bytesInOutput": 666 + "bytesInOutput": 664 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js": { - "bytesInOutput": 731 + "bytesInOutput": 729 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js": { "bytesInOutput": 561 @@ -20702,17 +20702,17 @@ "bytesInOutput": 560 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js": { - "bytesInOutput": 54421 + "bytesInOutput": 54417 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/version.js": { "bytesInOutput": 21 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js": { - "bytesInOutput": 113 - }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl.js": { "bytesInOutput": 67 }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js": { + "bytesInOutput": 113 + }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/index.js": { "bytesInOutput": 0 }, @@ -20720,10 +20720,10 @@ "bytesInOutput": 232 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js": { - "bytesInOutput": 673 + "bytesInOutput": 671 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js": { - "bytesInOutput": 2285 + "bytesInOutput": 2284 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js": { "bytesInOutput": 210 @@ -20756,7 +20756,7 @@ "bytesInOutput": 242 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js": { - "bytesInOutput": 1280 + "bytesInOutput": 1279 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js": { "bytesInOutput": 839 @@ -20774,7 +20774,7 @@ "bytesInOutput": 830 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js": { - "bytesInOutput": 1774 + "bytesInOutput": 1773 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js": { "bytesInOutput": 637 @@ -20789,7 +20789,7 @@ "bytesInOutput": 1517 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js": { - "bytesInOutput": 1128 + "bytesInOutput": 1127 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js": { "bytesInOutput": 180 @@ -20864,7 +20864,7 @@ "bytesInOutput": 719 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js": { - "bytesInOutput": 1781 + "bytesInOutput": 1780 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js": { "bytesInOutput": 657 @@ -20957,7 +20957,7 @@ "bytesInOutput": 1162 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Conv2D.js": { - "bytesInOutput": 1720 + "bytesInOutput": 1718 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Conv2DBackpropInput.js": { "bytesInOutput": 2128 @@ -21071,7 +21071,7 @@ "bytesInOutput": 253 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/PadV2.js": { - "bytesInOutput": 950 + "bytesInOutput": 948 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Pow.js": { "bytesInOutput": 95 @@ -21140,7 +21140,7 @@ "bytesInOutput": 46 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Tile.js": { - "bytesInOutput": 767 + "bytesInOutput": 765 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Unpack.js": { "bytesInOutput": 608 @@ -21160,17 +21160,17 @@ "node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js": { "bytesInOutput": 3425 }, + "node_modules/@tensorflow/tfjs-backend-wasm/dist/version.js": { + "bytesInOutput": 21 + }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/base.js": { "bytesInOutput": 0 }, - "node_modules/@tensorflow/tfjs-backend-wasm/dist/version.js": { - "bytesInOutput": 22 - }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/index.js": { "bytesInOutput": 0 }, "src/tfjs/tf-browser.js": { - "bytesInOutput": 208 + "bytesInOutput": 207 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_constraints.js": { "bytesInOutput": 353 @@ -21209,7 +21209,7 @@ "bytesInOutput": 8999 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js": { - "bytesInOutput": 5882 + "bytesInOutput": 5881 }, "node_modules/@tensorflow/tfjs-layers/dist/backend/state.js": { "bytesInOutput": 254 @@ -21233,7 +21233,7 @@ "bytesInOutput": 577 }, "node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js": { - "bytesInOutput": 7438 + "bytesInOutput": 7436 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js": { "bytesInOutput": 200 @@ -21305,7 +21305,7 @@ "bytesInOutput": 29892 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js": { - "bytesInOutput": 9235 + "bytesInOutput": 9196 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/core.js": { "bytesInOutput": 9964 @@ -21314,7 +21314,7 @@ "bytesInOutput": 2811 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js": { - "bytesInOutput": 11973 + "bytesInOutput": 11970 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js": { "bytesInOutput": 2406 @@ -21506,7 +21506,7 @@ "bytesInOutput": 4829 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js": { - "bytesInOutput": 11031 + "bytesInOutput": 11029 }, "node_modules/@tensorflow/tfjs-data/dist/util/deep_map.js": { "bytesInOutput": 2470 @@ -21563,7 +21563,7 @@ "bytesInOutput": 22 } }, - "bytes": 1526803 + "bytes": 1526705 } } } diff --git a/package-lock.json b/package-lock.json index 776a1713..15d708a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -506,9 +506,9 @@ } }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "asynckit": { @@ -818,9 +818,9 @@ } }, "esbuild": { - "version": "0.8.23", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.23.tgz", - "integrity": "sha512-LkgCmotGnhVgRGxjDkTBBYrnJ5stcxK+40cEJGtXUS16hcAWy90cn1qjxKCogzLPJ75gW/L6ejly7VKrMstVGQ==", + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.26.tgz", + "integrity": "sha512-u3MMHOOumdWoAKF+073GHPpzvVB2cM+y9VD4ZwYs1FAQ6atRPISya35dbrbOu/mM68mQ42P+nwPzQVBTfQhkvQ==", "dev": true }, "escalade": { @@ -836,9 +836,9 @@ "dev": true }, "eslint": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", - "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -875,7 +875,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^5.2.3", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -1349,9 +1349,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -1471,9 +1471,9 @@ } }, "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -2304,46 +2304,14 @@ } }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, "spdx-correct": { @@ -2455,55 +2423,15 @@ } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" } }, "tar": { diff --git a/package.json b/package.json index 4e35fea5..8aa03402 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "@vladmandic/pilogger": "^0.2.10", "chokidar": "^3.4.3", "dayjs": "^1.9.7", - "esbuild": "^0.8.23", - "eslint": "^7.15.0", + "esbuild": "^0.8.26", + "eslint": "^7.16.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.22.1", "eslint-plugin-json": "^2.1.2", diff --git a/src/face/facemesh.js b/src/face/facemesh.js index 52a5a9f5..0e008562 100644 --- a/src/face/facemesh.js +++ b/src/face/facemesh.js @@ -16,7 +16,6 @@ class MediaPipeFaceMesh { for (const prediction of (predictions || [])) { if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing const mesh = prediction.coords ? prediction.coords.arraySync() : null; -// AT: mesh_raw const meshRaw = prediction.rawCoords; const annotations = {}; if (mesh && mesh.length > 0) { @@ -26,8 +25,7 @@ class MediaPipeFaceMesh { } } } -// AT: raw version of box, the same as the TFJS Facemesh output version (.boundingBox) - const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? {topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint} : null; + const boxRaw = (config.face.mesh.returnRawData && prediction.box) ? { topLeft: prediction.box.startPoint, bottomRight: prediction.box.endPoint } : null; const box = prediction.box ? [ Math.max(0, prediction.box.startPoint[0]), @@ -40,7 +38,6 @@ class MediaPipeFaceMesh { confidence: prediction.confidence || 0, box, mesh, -// AT: boxRaw, meshRaw boxRaw, meshRaw, annotations, diff --git a/src/face/facepipeline.js b/src/face/facepipeline.js index 6deeb9bc..f2f30199 100644 --- a/src/face/facepipeline.js +++ b/src/face/facepipeline.js @@ -157,13 +157,10 @@ class Pipeline { for (let i = 0; i < this.storedBoxes.length; i++) { const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor); const enlargedBox = bounding.enlargeBox(scaledBox); -// AT: preserve aspect ratio, pulled from Facemesh upstream (https://github.com/tensorflow/tfjs-models/commit/85e6e487cc4bd21f0707a509e5024484a0798aa0) const squarifiedBox = bounding.squarifyBox(enlargedBox); const landmarks = this.storedBoxes[i].landmarks.arraySync(); const confidence = this.storedBoxes[i].confidence; -// AT: preserve aspect ratio, pulled from Facemesh upstream this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks }; -// this.storedBoxes[i] = { ...enlargedBox, confidence, landmarks }; } this.runsWithoutFaceDetector = 0; } @@ -239,7 +236,6 @@ class Pipeline { const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix); const landmarksBox = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData)); -// AT: preserve aspect ratio, pulled from Facemesh upstream const squarifiedLandmarksBox = bounding.squarifyBox(landmarksBox); const transformedCoords = tf.tensor2d(transformedCoordsData); const prediction = { @@ -249,11 +245,8 @@ class Pipeline { confidence: box.confidence, image: face, }; -// AT: rawCoords if (config.face.mesh.returnRawData) prediction.rawCoords = rawCoords; -// AT: preserve aspect ratio, pulled from Facemesh upstream this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal }; -// this.storedBoxes[i] = { ...landmarksBox, landmarks: transformedCoords.arraySync(), confidence: box.confidence, faceConfidence: confidenceVal }; return prediction; })); diff --git a/wiki b/wiki index 70b1aadc..89996eaa 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 70b1aadc1b00fe59c454bc73baf413289961f28b +Subproject commit 89996eaa377e4e1c2dc292f540235485272d53bf